首頁 > 後端開發 > Python教學 > 如何在Python中新增和存取實例方法?

如何在Python中新增和存取實例方法?

Susan Sarandon
發布: 2024-12-20 17:38:10
原創
681 人瀏覽過

How Do I Add and Access Instance Methods in Python?

存取實例方法

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

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