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