python 子類繼承父類__init__(轉載)
阿新 • • 發佈:2018-04-10
elf lpad pla 最好 就是 main 代碼 borde wid
?
轉載:
http://www.jb51.net/article/100195.htm
前言
使用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__方法的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
python 子類繼承父類__init__(轉載)