好文分享 — Every dunder method in Python
覺得我們的內容實用嗎? MyApollo 電子報讀者募集中!歡迎訂閱電子報!
物件導向程式設計一直是 Python 重點之一,大家肯定或多或少接觸過 def __init__(self)
, __repr__(self)
, __str__(self)
這些方法。
這些方法被稱為 dunder methods, 其中 dunder 是 “double underscore” 的複合詞。
Python 其實提供相當多種 dunder methods 可以實作,不過多數人不會深究每個 dunder method 的用途,但如果能夠花點時間看過所有 dunder methods 的說明的話,是可以讓 Python 程式設計的功力更上一層的,譬如原本以下的程式碼:
x, y = MyClass(), MyClass()
z = x.add(y)
只要在 MyClass 額外實作 __add__(self, v)
與 __radd__(self, v)
2 個方法的話,可以變成支援加法形式的運算:
x, y = MyClass(), MyClass()
z = x + y
不僅程式碼看起來更簡潔,也更優雅!
而 “Every dunder method in Python” 1 文將所有的 dunder methods 都用表格整理好,相當具有參考價值,推薦!