在Python 中向現有物件實例添加方法
在Python 中,通常不鼓勵將方法添加到現有物件(即不在類別定義)。但是,在必要時也有一些例外。
綁定方法與函數
在 Python 中,方法透過綁定到物件實例來與函數區分開來。呼叫方法時,實例會自動作為第一個參數傳遞。
另一方面,函數不綁定到任何特定實例,必須使用適當的參數明確呼叫。
修改類別屬性
如果你想為一個類別的所有實例新增一個方法,只需修改類別定義:
class A: def bar(self): print("bar") a = A() a.bar() # Output: "bar"
修改單一實例
但是,如果您需要為類別的特定實例新增方法,事情會變得稍微複雜一些。您不能直接將函數指派給實例屬性,因為它不會被綁定:
def barFighters(): print("barFighters") a.barFighters = barFighters a.barFighters() # TypeError: barFighters() takes exactly 1 argument
使用MethodType 綁定函數
正確綁定函數對於物件實例,您可以使用types 模組中的MethodType函數:
import types a.barFighters = types.MethodType(barFighters, a) a.barFighters() # Output: "barFighters"
此方法綁定確保函數呼叫時將實例作為第一個參數進行呼叫。
以上是如何為現有 Python 物件添加方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!