前言
使用Python寫過面向對象的代碼的同學,可能對 __init__
方法已經非常熟悉了,__init__
方法在類的一個對象被建立時,馬上運行。這個方法可以用來對你的對象做一些你希望的 初始化 。
注意:這個名稱的開始和結尾都是雙下劃線。
父類A
1
2
3
4
5
6
|
class A( object ): def __init__( self , name): self .name = name print "name:" , self .name def getName( self ): return 'A ' + self .name |
子類不重寫__init__
, 實例化子類時,會自動調用父類定義的__init__
1
2
3
4
5
6
7
|
class B(A): def getName( self ): return 'B ' + self .name if __name__ = = '__main__' : b = B( 'hello' ) print b.getName() |
執行
1
2
3
|
$python lei2.py name: hello B hello |
但重寫了__init__
時,實例化子類,就不會調用父類已經定義的__init__
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class A( object ): def __init__( self , name): self .name = name print "name:" , self .name def getName( self ): return 'A ' + self .name class B(A): def __init__( self , name): print "hi" self .name = name def getName( self ): return 'B ' + self .name if __name__ = = '__main__' : b = B( 'hello' ) print b.getName() |
執行
1
2
3
|
$python lei2.py hi B hello |
為了能使用或擴展父類的行為,最好顯示調用父類的__init__
方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class A( object ): def __init__( self , name): self .name = name print "name:" , self .name def getName( self ): return 'A ' + self .name class B(A): def __init__( self , name): super (B, self ).__init__(name) print "hi" self .name = name def getName( self ): return 'B ' + self .name if __name__ = = '__main__' : b = B( 'hello' ) print b.getName() |
執行
1
2
3
4
|
$python lei2.py name: hello hi B hello |
總結
以上就是關于python子類繼承父類的__init__方法的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
原文鏈接:http://www.cnblogs.com/kaituorensheng/p/5693677.html