Python中類的__init__繼承

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
-------------------------

 

 

 

更新....擴展

相關文章
相關標籤/搜索