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