python知識點 建構函式

2021-09-25 22:35:56 字數 2376 閱讀 8354

python 中的建構函式是__init__()函式。用於類的例項化,當乙個物件被建立時,就會立刻被呼叫,有且只能執行一次。

classa(

):def__init__

(self)

:print

("a1"

)

執行:a=a()

輸出: a1

1.建構函式可以不寫,不寫時會呼叫預設的建構函式:

classa(

):pass

執行:a = a()

輸出:

2.建構函式可以傳入引數,在初始化時需要賦值,否則會報錯。可以賦值預設值。

classa(

):def__init__

(self,name)

:print

(name)

執行:a=a(「a2」)

輸出:a2

1.當父類有構造方法,子類不重寫構造方法時:

classa(

):def__init__

(self)

:print

("a1"

)class

b(a)

:pass

執行:b = b()

輸出:a1

2.當父類構造方法有引數時,子類不重寫構造方法時:程式會報錯

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()

輸出:b1

4.當需要父類的構造方法時:

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 值...