python 中的建構函式是__init__()函式。用於類的例項化,當乙個物件被建立時,就會立刻被呼叫,有且只能執行一次。
classa(
):def__init__
(self)
:print
("a1"
)
執行:a=a()1.建構函式可以不寫,不寫時會呼叫預設的建構函式:輸出: a1
classa(
):pass
執行:a = a()2.建構函式可以傳入引數,在初始化時需要賦值,否則會報錯。可以賦值預設值。輸出:
classa(
):def__init__
(self,name)
:print
(name)
執行:a=a(「a2」)1.當父類有構造方法,子類不重寫構造方法時:輸出:a2
classa(
):def__init__
(self)
:print
("a1"
)class
b(a)
:pass
執行:b = b()2.當父類構造方法有引數時,子類不重寫構造方法時:程式會報錯輸出:a1
classa(
):def__init__
(self,name)
:print
(name)
class
b(a)
:pass
執行:b = b()3.當子類重寫父類的構造方法時,父類的構造方法不再預設的被呼叫。報錯
classa(
):def__init__
(self)
:print
("a1"
)class
b(a)
:def
__init__
(self)
:print
("b1"
)
執行:b = b()4.當需要父類的構造方法時:輸出:b1
classa(
):def__init__
(self)
:print
("a1"
)class
b(a)
:def
__init__
(self)
:super()
.__init__(
)# 方法一
# super(b,self).__init__() # 方法二
# a.__init__(self) # 方法三
print
("b1"
)
b = b()方法一,二,三都可以呼叫父類的構造方法。最常用的還是方法一。輸出:a1,b1
當父類的構造方法含有引數時,需要在方法一,二,三中的__init__(引數1,引數2…)傳遞引數
5.當多繼承時,會呼叫哪個父類的構造方法呢?
python的有個對父類的執行順序c3演算法,可呼叫mro()方法檢視
classa(
):def__init__
(self)
:print
("a1"
)classc(
):def__init__
(self)
:print
("c1"
)class
b(a,c)
:def
__init__
(self)
:super()
.__init__(
)# 方法一
# super(b,self).__init__() # 方法二
# a.__init__(self) # 方法三
print
("b1"
)
執行:b = b()執行:print(b.mro())
輸出:a1,b1
輸出:[, , , ]
建構函式知識點
1 建構函式必須與類名相同,並且不能有返回值 返回值也不能為void 若在建構函式前面加上void,編譯器會把它認為是方法,而不是建構函式 當然在new的時候,也不能自動呼叫 2 每個類可以有多個建構函式,如果人為定義了建構函式,編譯器不會建立預設的建構函式。3 建構函式在物件例項化的時候被自動呼叫...
複製建構函式知識點
1.複製建構函式 複製建構函式又稱拷貝建構函式,它是一種特殊的建構函式。它的作用就是用乙個已經生成的物件來初始化另乙個同類的物件。變數的初始化 int a 10 int b a 物件的初始化 point pt1 10,20 point pt2 pt1 複製建構函式定義的一般形式為 類名 const ...
Python 函式知識點
1.函式的意思 函式是指對某一功能的封裝 2.函式的語法 def 函式名 函式體函式名 3.函式的返回值 return,當讀到return,不會繼續往下讀 1.如果沒有return,預設返回none 2.如果只有return,返回none 3.return 返回值,只返回乙個值 4.return 值...