为现有 Python 对象附加附加方法
在 Python 中,通常不建议修改现有对象的方法,但在某些情况下,可能有必要。本文探讨了如何在创建实例后向实例添加方法,重点介绍函数和绑定方法之间的区别。
理解函数与绑定方法
Python 中,函数是未绑定的,而绑定方法则与特定实例相关联。当调用绑定方法时,实例将自动作为第一个参数传递。当在类定义中定义方法时,就会发生这种绑定。
更新类级别方法
修改在类级别定义的方法非常简单。您可以简单地为类的方法属性分配一个新函数:
class A: def bar(self): print("bar") A.fooFighters = fooFighters
此更改适用于该类的所有实例,包括现有实例。
添加实例-具体方法
将方法附加到单个实例更为复杂。将函数直接分配给实例的属性不会创建绑定方法,从而导致使用零参数调用时出错。
要为单个实例创建绑定方法,我们可以使用 MethodType 函数types 模块:
import types a.barFighters = types.MethodType(barFighters, a)
现在,当调用 a.barFighters() 时,该方法会绑定到 a 实例,并且无需任何额外的操作即可调用它
保留实例隔离
需要注意的是,修改特定于实例的方法不会影响同一类的其他实例。每个实例都维护自己的一组属性,包括方法。
以上是如何向现有 Python 对象添加新方法?的详细内容。更多信息请关注PHP中文网其他相关文章!