DUNDER(Double UNDERscore)方法是 Python 類別中的特殊方法,格式為 __method__。這些方法讓開發者可以定義類別在特定操作下的行為,例如建立物件、加總、比較、列印等,是物件導向設計的核心。
class Circle:
def __init__(self, radius):
self.radius = radius- 建立物件時會自動執行
__init__,用於設定初始值。 self是代表目前的物件實例。
def __str__(self):
return f"Circle with radius {self.radius}"- 透過
print(obj)或str(obj)會呼叫此方法。 - 用來提供對使用者友善的輸出格式。
def __repr__(self):
return f"Circle({self.radius})"- 透過
repr(obj)或互動式環境呼叫時觸發。 - 通常提供能夠重建物件的語法。
| 方法名稱 | 用途說明 | 範例操作 |
|---|---|---|
__len__ |
定義 len(obj) 行為 |
len(my_obj) |
__eq__ |
定義 == 等值比較邏輯 |
a == b |
__lt__ |
定義 < 小於比較邏輯 |
a < b |
__add__ |
定義 + 加法運算邏輯 |
a + b |
__getitem__ |
支援索引操作 | obj[0] |
__call__ |
讓物件本身可像函式一樣呼叫 | obj() |
__del__ |
當物件被刪除時觸發,用於資源釋放(不常用) | del obj |
class Circle:
def __init__(self, radius):
self.radius = radius
def __str__(self):
return f"圓的半徑為 {self.radius}"
def __repr__(self):
return f"Circle({self.radius})"
def __eq__(self, other):
return self.radius == other.radius
def __add__(self, other):
return Circle(self.radius + other.radius)c1 = Circle(3)
c2 = Circle(4)
print(c1 + c2) # 圓的半徑為 7
print(c1 == c2) # FalseDUNDER 方法是 Python 強大且彈性的設計元素,能讓自定義類別的行為與內建型態一致,便於開發、除錯與重用。