存取實例方法
在Python中,物件有兩種類型的方法:函數和綁定方法。綁定方法與特定實例相關聯,並且它們在呼叫時將實例作為第一個參數傳遞。另一方面,函數是未綁定的,可以隨時修改。
為了說明差異:
def foo(): print("foo") class A: def bar(self): print("bar") a = A() print(foo) # <function foo at 0x00A98D70> print(a.bar) # <bound method A.bar of <__main__.A instance at 0x00A9BC88>>
為類別定義新增方法
您可以修改類別定義來為所有實例新增方法。例如,以下程式碼為 A 類別新增 fooFighters 方法:
def fooFighters(self): print("fooFighters") A.fooFighters = fooFighters a2 = A() a2.fooFighters() # fooFighters # Also affects previously defined instances a.fooFighters() # fooFighters
新增方法到單一實例
為單一實例新增方法更為複雜。以下嘗試失敗,因為函數未綁定到實例:
def barFighters(self): print("barFighters") a.barFighters = barFighters a.barFighters() # TypeError: barFighters() takes exactly 1 argument (0 given)
要綁定函數,請使用類型模組中的MethodType 函數:
import types a.barFighters = types.MethodType(barFighters, a) a.barFighters() # barFighters # Other instances unaffected a2.barFighters() # AttributeError: A instance has no attribute 'barFighters'
描述符的進一步探索元類別程式設計提供了更高階的操作物件方法的技術。
以上是如何在Python中新增和存取實例方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!