子類繼承父類的時候 需要把父類里面的所有參數(shù)寫一遍嗎?那要是多重繼承 祖先類的 入?yún)⒃趺磳懀?/h1>
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)
? ? ? ? ?父類接受參數(shù)的是后是按順序接收的不能對應到我傳的參數(shù)吧?
? ? ? ? ?結果?
? ? ? ? ?boosName --> name?
? ? ? ? ?boosGender? --> gender??
? ? ? ? ?
問題2: 這樣遞增的入?yún)⒂袥]有好的寫法呢?一個類里面有幾十個參數(shù)的話是不是得每個參數(shù)都要傳?
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)
? ? ? ? ?父類接受參數(shù)的是后是按順序接收的不能對應到我傳的參數(shù)吧?
? ? ? ? ?結果?
? ? ? ? ?boosName --> name?
? ? ? ? ?boosGender? --> gender??
? ? ? ? ?
問題2: 這樣遞增的入?yún)⒂袥]有好的寫法呢?一個類里面有幾十個參數(shù)的話是不是得每個參數(shù)都要傳?
2024-05-30
當Python子類繼承父類時,通常不需要重新列出所有的參數(shù),只需要在子類的初始化方法中調用父類的初始化方法即可。這樣可以確保子類繼承了父類的屬性和方法。
對于多重繼承和祖先類的情況,子類需要在初始化方法中分別調用每個父類的初始化方法,以確保所有祖先類的屬性和方法都被正確繼承。在Python中,可以使用
super()
函數(shù)來實現(xiàn)這一點,它可以幫助子類調用父類的方法。以下是一個示例代碼,展示了Python中子類繼承父類以及多重繼承時如何處理參數(shù)的情況: