類型1:父類和子類的實例變量均不需要傳遞
class A(object): def __init__(self): self.name = "cui" def get_name(self): return self.name class B(A): def __init__(self): super(B,self).__init__() self.age = 12 b = B()
類型2:父類的實例變量不需要傳遞,子類的實例變量需要傳遞
class A(object): def __init__(self): self.name = "zhang" def get_name(self): return self.name class B(A): def __init__(self,age): super(B,self).__init__() self.age = age b = B("san")
類型3:父類有部分實例變量需要傳遞,子類實例變量需要傳遞
class A(object): def __init__(self,sex): self.name = "zhang" self.sex = sex def get_name(self): return self.name + self.sex class B(A): def __init__(self,sex,age): super(B,self).__init__(sex) self.age = age b = B("男",12)
類型4:父類和子類的所有變量都需要傳遞
class A(object): def __init__(self,name,sex): self.name = name self.sex = sex def get_name(self): return self.name + self.sex class B(A): def __init__(self,name,sex,age): super(B,self).__init__(name,sex) self.age = age b = B("zhang","男",12)
類型5:父類變量都需要傳遞,子類有部分實例變量需要傳遞
class A(object): def __init__(self,name,sex): self.name = name self.sex = sex def get_name(self): return self.name + self.sex class B(A): def __init__(self,name,sex,age): super(B,self).__init__(name,sex) self.age = age self.courage = "高中" b = B("zhang","男",12)
類型6:父類和子類都有部分實例變量需要傳遞
class A(object): def __init__(self,name): self.name = name self.sex = "女" def get_name(self): return self.name + self.sex class B(A): def __init__(self,name,sex,age): super(B,self).__init__(name) self.age = age self.courage = "高中" b = B("zhang","男",12)
總結:
子類繼承父類的構造函數中,在子類的構造函數中,__init__方法中的變量是包括自己和父類所有需要傳遞的變量,而在super().__init__方法中的參數僅僅包括父類需要傳遞的變量
def __init__(self,name,sex,age): super(B,self).__init__(name) self.age = age self.courage = "高中"