在Python中,每個類別都有一個建構函數,它是類別內部指定的特殊方法。建構函數/初始化程序將在為類別建立新物件時自動呼叫。當物件被初始化時,建構函數將值指派給類別中的資料成員。
沒有必要明確定義建構子。但為了建立建構函數,我們需要遵循以下規則 -
對於一個類,它只允許有一個建構子。
建構函式名稱必須是 __init__。
必須使用實例屬性定義建構子(只需將 self 關鍵字指定為第一個參數)。
它不能傳回 None 之外的任何值。
class A(): def __init__(self): pass
考慮下面的範例並了解建構子的工作原理。
class SampleClass(): def __init__(self): print("it a sample class constructor") # creating an object of the class A = SampleClass()
it a sample class constructor
在上面的區塊中,為 SampleClass() 建立了物件 A,並且對於此實例,會自動執行方法 __init__(self)。這樣它就顯示了建構函式的語句。
建構函式分為三種型別。
預設建構子
#參數化建構子
#非參數化建構子
預設建構函式不是由使用者定義的,Python 本身在程式編譯期間創建了一個建構函式。它不執行任何任務,但初始化物件。
Python 產生一個空建構函數,其中沒有任何程式碼。請參閱下面的範例。
class A(): check_value = 1000 # a method def value(self): print(self.check_value) # creating an object of the class obj = A() # calling the instance method using the object obj.value()
1000
讓我們使用Python內建的dir()函數來驗證類別A的建構子。
dir(A) Output: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'check_value', 'value']
python dir() 函數傳回指定物件的所有屬性和方法的清單。在上面的列表中我們可以看到為物件 A 建立了預設建構子 __init__ 。
參數化建構函式接受一個或多個參數以及 self。當您想要建立一個具有自訂屬性值的物件時,它非常有用。參數化建構函式允許我們在建立物件時指定物件屬性的值。
讓我們來看一個帶有參數化建構函式的類別的範例
class Family: members = 10 def __init__(self, count): self.members = count def disply(self): print("Number of members is", self.members) joy_family = Family(25) joy_family.disply()
Number of members is 25
這裡使用自訂值 25 建立物件 Joy 系列,而不是使用預設成員屬性值 10。並且該值可以用於此實例,因為它被指派給 self.members 屬性。
非參數化建構子不接受 self 以外的任何參數。當您想要操作實例屬性的值時,它非常有用。
讓我們來看一個非參數化建構子的範例。
class Player: def __init__(self): self.position = 0 # Add a move() method with steps parameter def move(self, steps): self.position = steps print(self.position) def result(self): print(self.position) player1 = Player() print('player1 results') player1.move(2) player1.result() print('p2 results') p2 = Player() p2.result()
player1 results 2 2 p2 results 0
player1 物件透過使用 move() 方法來操作「position」屬性。並且 p2 物件存取“position”屬性的預設值。
以上是Python中的建構函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!