Python中的建構函數

WBOY
發布: 2023-09-02 16:29:20
轉載
2196 人瀏覽過

Python中的建構函數

在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中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板