修补Python中的类

时间:2009-06-08 11:53:39

标签: python class monkeypatching

假设我有一个Python类,我想添加一个额外的属性。

之间有什么区别吗?
import path.MyClass
MyClass.foo = bar

并使用类似的东西:

import path.MyClass
setattr(MyClass, 'foo', bar)

如果没有,为什么人们似乎做第二次而不是第一次呢? (例如,这里http://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html

1 个答案:

答案 0 :(得分:11)

这些语句是等价的,但是可以使用setattr,因为它是两者中最动态的选择(使用setattr可以使用变量作为属性名称。)

请参阅:http://docs.python.org/library/functions.html#setattr