通过在定义后添加更多方法来扩展python类

时间:2012-06-18 09:44:15

标签: class methods python-3.x

class A:
    pass

def b(self):
    print('b')

A.b = b

a = A()

此时a.b是一个很好的绑定方法对象,但如果我说:

a.b() 

我得到一个错误,说b需要至少一个参数。

我的问题是: 1.如何将方法引入现有类?和 2.对于这类事情,是否有任何记录在案的“最佳实践”?

1 个答案:

答案 0 :(得分:1)

这应该可以正常工作(参见:http://ideone.com/WWPg8

Python函数是描述符,分别在类和实例上访问时转换为未绑定和绑定的方法;见http://docs.python.org/howto/descriptor.html

“猴子修补”类和实例被认为是完全正常的,只要您清楚自己正在做什么并充分记录它。