在Python中修补类
假设我有一个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 个回答
11
这两种写法是一样的,但使用setattr可能更灵活,因为它允许你用一个变量来表示属性的名字。
详细信息请查看:http://docs.python.org/library/functions.html#setattr