Python中類的__init__繼承spa
概念:code
定義父類blog
In [10]: class Person: ....: def __init__(self,name,age,sex): ....: self.name = name ....: self.age = age ....: self.sex = sex ....: def get_name(self): ....: print('name:',self.name) ....: In [11]: Bob = Person('Bob',18,'男') In [12]: Bob.get_name() name: Bob
【1】子類不重寫__init__,實例化子類時,會自動調用父類定義的__init__繼承
In [13]: class Person_child(Person): ....: def get_name(self): ....: print('name:',self.name) ....: In [14]: child = Person_child('baby',2,'男') In [15]: child.get_name() name: baby【2】另外一種的驗證方式get
class Person: def __init__(self,name,age): self.name = 'Bob' self.age = 18 def get_name(self): print('name:',self.name) class Student(Person): def get_name(self): print('name:',self.name) Kevin = Student('Kevin',12) print('-------------------------') print(Kevin.name) print(Kevin.age) print('-------------------------') output ------------------------- Bob 18 -------------------------【3】但重寫了__init__時,實例化子類,就不會調用父類已經定義的__init__it
In [17]: class Person_child(Person): ....: def __init__(self,name,age,sex): ....: self.name = name ....: self.age = age ....: self.sex = sex ....: def get_name(self): ....: print('child_name:',self.name) ....: In [18]: K = Person_child('Kevin',16,'男') In [19]: K.get_name() child_name: Kevin【4】爲了能使用或擴展父類的行爲,最好顯示調用父類的__init__方法class
class Person: def __init__(self,name,age): self.name = 'Bob' self.age = 18 def get_name(self): print('name:',self.name) class Student(Person): def __init__(self,name,age,sex): super(Student,self).__init__(name,age) self.sex = sex def get_detail(self): print('詳細信息:',self.name,'---',self.age,'---',self.sex) Kevin = Student('Kevin',12,'男') print('-------------------------') print(Kevin.name) print(Kevin.age) print(Kevin.sex) print(Kevin.get_detail()) print('-------------------------') # output ------------------------- Bob 18 男 詳細信息: Bob --- 18 --- 男 None -------------------------
更新....擴展