为了账号安全,请及时绑定邮箱和手机立即绑定

子类继承父类的时候 需要把父类里面的所有参数写一遍吗?那要是多重继承 祖先类的 入参怎么写?

class Person(object):

    def __init__(self, name, gender):

        self.name = name

        self.gender = gender

class Student(Person):

    def __init__(self, name, gender, score):

        super(Student, self).__init__(name, gender)

        self.score = score

class Boos(object):

    def __init__(self, boosName, boosGender):

        self.boosName = boosName

        self.boosGender = boosGender

class Teacher(Student,Boos):

    def __init__(self, name, gender, score,course,boosName, boosGender):

        super(Teacher, self).__init__(name, gender, score,boosName, boosGender)

        self.course = course


        

问题1: 多重继承的时候super(Teacher, self).__init__(name, gender, score,boosName, boosGender) 

         Student   __init__(self, name, gender, score)

         Boos      __init__(self, boosName, boosGender)

         父类接受参数的是后是按顺序接收的不能对应到我传的参数吧?

         结果 

         boosName --> name 

         boosGender  --> gender  

         

问题2: 这样递增的入参有没有好的写法呢?一个类里面有几十个参数的话是不是得每个参数都要传?



正在回答

1 回答

当Python子类继承父类时,通常不需要重新列出所有的参数,只需要在子类的初始化方法中调用父类的初始化方法即可。这样可以确保子类继承了父类的属性和方法。

对于多重继承和祖先类的情况,子类需要在初始化方法中分别调用每个父类的初始化方法,以确保所有祖先类的属性和方法都被正确继承。在Python中,可以使用super()函数来实现这一点,它可以帮助子类调用父类的方法。

以下是一个示例代码,展示了Python中子类继承父类以及多重继承时如何处理参数的情况:

class Parent1:
    def __init__(self, param1):
        self.param1 = param1

class Parent2:
    def __init__(self, param1, param2):
        self.param1 = param1
        self.param2 = param2

class Child(Parent1, Parent2):
    def __init__(self, param1, param2, param3):
        super().__init__(param1)  # 调用第一个父类的初始化方法
        super(Parent1, self).__init__(param2)  # 调用第二个父类的初始化方法
        self.param3 = param3

child_obj = Child('A', 'B', 'C')
print(child_obj.param1)  # 输出:B
print(child_obj.param2)  # 输出:B
print(child_obj.param3)  # 输出:C


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

子类继承父类的时候 需要把父类里面的所有参数写一遍吗?那要是多重继承 祖先类的 入参怎么写?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信