访问实例方法
在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中文网其他相关文章!