建構函式建構函式也被稱為構造器,當建立物件的時候第乙個被自動呼叫的函式,系統預設提供了乙個無參的建構函式 per = person()
語法:def __ init__(self,arg1,arg2,...):
函式體說明:
之前的寫法中並沒有顯示的定義乙個個建構函式,所以系統預設提供了乙個無參的建構函式
arg1,arg2,...可以自己定義,但是,一般情況下,建構函式的形參列表和成員變數有關
建構函式的特點:建立物件;給物件的成員變數賦值
建構函式和成員函式之間的區別:
成員函式的函式名可以自定義,但是,建構函式的函式名是固定的__init__
成員函式需要被手動呼叫,但是,建構函式在建立物件的過程中是自動被呼叫的
對於同乙個物件而言,成員函式可以被呼叫多次,但是,建構函式只能被呼叫一次
#1.建構函式被呼叫
class check():
#成員變數
num1 = 0
s1 = ""
#成員方法
def show(self):
print("showing")
#建構函式
def __init__(self):
print("建構函式被執行了")
c = check() #建構函式被執行了
c.show() #showing
#2.給建構函式新增引數
class check1():
#成員變數
num1 = 0
s1 = ""
#成員方法
def show(self):
print("showing")
#建構函式
def __init__(self,*s): #設定不定長引數
print("建構函式被執行了~~~")
#注意1:當在類中定義了建構函式,並且給建構函式設定了引數,系統將不再提供無參的建構函式
#在建立物件的時候,注意引數的匹配問題
#注意2:在同乙個類中,建構函式只能出現一次
c1 = check1(10,20) #建構函式被執行了~~~
c1 = check1() #建構函式被執行了~~~
#3.建構函式的作用
class check2():
#成員變數
num1 = 0
s1 = ""
#成員方法
def show(self):
print("showing")
#建構函式
#建構函式的形參列表一般和成員變數有關【主要給成員變數賦值】
def __init__(self,n,s):
print(n,s)
num1 = n
s1 = s
c2 = check2(10,"abc") #10 abc
print(c2.num1,c2.s1) #0
#4.self的作用:通過self區分成員變數和區域性變數
class check3():
#成員變數
num1 = 0
s1 = ""
#成員方法
def show(self):
print("showing")
#建構函式
#建構函式的形參列表一般和成員變數有關【主要給成員變數賦值】
def __init__(self,n,s):
print(n,s)
#此時的num1並不是乙個區域性變數,而是乙個成員變數
self.num1 = n
self.s1 = s
c3 = check3(11,"abc") #11 abc
print(c3.num1,c3.s1) #11 abc
總結:一般情況下,在乙個類中,包含建構函式和成員函式,在建構函式中,定義了成員變數並給成員變數賦值。建構函式的形參與成員變數有關#5.使用self之後:可以省略成員變數的定義
class check4():
#成員方法
def show(self):
print("showing")
#建構函式
def __init__(self,num1,s1):
print(num1,s1)
#定義成員變數,成員變數賦初始值
self.num1 = num1
self.s1 = s1
c4 = check4(12,"abc") #12 abc
print(c4.num1,c4.s1) #12 abc
C 建構函式之預設建構函式
參考部落格 以下內容是在上述博主的部落格中提煉出來的 一 預設建構函式的含義是啥 主要就是 預設建構函式在呼叫的時候不需要顯示傳入實參的建構函式 二 預設的建構函式的分類 1 無參建構函式 就是沒有引數的建構函式 class sample 2 帶有形參,並且帶有預設值的建構函式 class samp...
C 建構函式之委託建構函式
委託建構函式 c 11新標準擴充套件了建構函式初始值的功能,使得我們可以定義所謂的委託建構函式。乙個委託建構函式使用它所屬類的其他建構函式執行它自己的初始化過程,或者說它把它自己的一些 或者全部 職責委託給了其他建構函式。和其他建構函式一樣,乙個委託建構函式也有乙個成員初始值的列表和乙個函式體。在委...
C 之建構函式
參考 c 程式設計指南 類是否用 static 來修飾,有兩種,一種是用static修飾,一種則不是。對於前者,如果,類提供了乙個無引數的建構函式,那麼new 例項化物件時候,就會呼叫這個無引數的建構函式 也叫預設建構函式 如果,類提供了乙個有引數的建構函式,但是new時候,依然沒有提供引數,那麼情...