Python中類的__init__繼承


Python中類的__init__繼承


 

 概念:

 定義父類

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】另一種的驗證方式

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__

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

 

 

 

更新....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM