1. 程式人生 > >python 子類繼承父類__init__(轉載)

python 子類繼承父類__init__(轉載)

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__(轉載)