首页 >后端开发 >Python教程 >如何在Python中添加和访问实例方法?

如何在Python中添加和访问实例方法?

Susan Sarandon
Susan Sarandon原创
2024-12-20 17:38:10683浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn