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: 这样递增的入参有没有好的写法呢?一个类里面有几十个参数的话是不是得每个参数都要传?
当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