__init__
方法介紹:
如果其基類也具有__init__()
, 必須顯式地在__init__()
呼叫它, 以保證能夠適當地初始化它的基類部分;例如:baseclass.__init__(self, [args...])
作為構造器的特殊情況, 它沒有值被返回, 如果返回某個值, 會在執行時丟擲異常typeerror.
1.子類定義了__init__
方法時若未顯示呼叫基類__init__
方法,python不會幫你呼叫,解釋執行都ok
classa(
):def__init__
(self)
:print
'a'class
b(a)
:def
__init__
(self)
:print
'b'if __name__==
'__main__'
: b=b(
)>>
>
b
2.子類未定義__init__
方法時,python會自動幫你呼叫首個基類的__init__
方法,注意是首個。即:子類繼承自多個基類時,只有第乙個基類的__init__
方法會被呼叫到:
'''
'''classa:
def__init__
(self)
:print
'a'classb:
def__init__
(self)
:print
'b'class
c(b)
:def
__init__
(self)
:print
'c'pass
class
d1(a,b,c)
:pass
class
d2(b,a,c)
:pass
class
d3(c,b,a)
:pass
if(__name__==
'__main__'):
print
'd1------->:'
d1=d1(
)print
'd2------->:'
d2=d2(
)print
'd3------->:'
d3=d3(
)>>
>
d1----
--->:a
d2----
--->:b
d3----
--->
:c
3 基類未定義__init__
方法時,若此時子類顯示呼叫基類__init__
方法時,python向上超找基類的基類的__init__
方法並呼叫,實質同2
classa:
def__init__
(self)
:print
'a'classb:
def__init__
(self)
:print
'b'class
c1(b,a)
:pass
class
c2(a,b)
:pass
class
d1(c1)
:def
__init__
(self)
: c1.__init__(self)
class
d2(c2)
:def
__init__
(self)
: c2.__init__(self)
if(__name__==
'__main__'):
print
'd1------->:'
d1=d1(
)print
'd2------->:'
d2=d2(
)>>
>
d1----
--->:b
d2----
--->:a
----
----
----
----
----
-
python子類如何繼承父類的例項變數?
型別1 父類和子類的例項變數均不需要傳遞 classa object def init self self.name cui defget name self return self.name class b a def init self super b,self init self.age 12...
python子類如何繼承父類的例項變數?
型別1 父類和子類的例項變數均不需要傳遞 class a object def init self self.name cui def get name self return self.name class b a def init self super b,self init self.age ...
類與例項 繼承
練習定義類的時候派生類定義的語法如下所示 class derivedclassname baseclassname 繼承的一般表現形式 class 父類 pass class 子類 父類 passpython有兩個內建函式可被用於繼承機制 1.在父類的基礎上產生子類,產生的子類就叫做派生類 2.父類...