int*_*tar 6 python monkeypatching class
假设我有一个Python类,我想添加一个额外的属性.
两者之间有什么区别吗?
import path.MyClass
MyClass.foo = bar
Run Code Online (Sandbox Code Playgroud)
并使用类似的东西:
import path.MyClass
setattr(MyClass, 'foo', bar)
Run Code Online (Sandbox Code Playgroud)
?
如果没有,为什么人们似乎做第二个而不是第一个?(例如http://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html)
Bli*_*ixt 11
这些语句是等价的,但是可以使用setattr,因为它是两者中最动态的选择(使用setattr可以使用变量作为属性名称.)
请参阅:http://docs.python.org/library/functions.html#setattr