【发布时间】:2010-11-01 03:52:01
【问题描述】:
假设我有一个要添加额外属性的 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)
【问题讨论】:
-
为什么不用额外的方法更新你的类的定义呢?当您可以简单地编辑类定义时,为什么要做所有这些“神奇”的东西?
-
当我问这个问题时,该类来自一个我们不想更改的库;我们不能子类化它。虽然大体上同意。
标签: python class monkeypatching