我有一个类,位于一个单独的模块中,我无法更改。Monkey-patch Python class
from module import MyClass
class ReplaceClass(object)
...
MyClass = ReplaceClass
这不会改变MyClass在其他地方,但这个文件。但是,如果我要添加这样的方法
def bar():
print 123
MyClass.foo = bar
这将工作,foo方法将在其他地方提供。
如何完全替换类?
+1更快。只要确保它在任何使用'module的导入之前运行。MyClass' – aaronasterling 2010-09-21 23:32:07
速度越快越不正确,但我并不认为这需要额外的解释。一旦你看到如何去做,差异应该是非常明显的。 – 2010-09-21 23:37:24
确保您是导入课程的“第一个”。已经引用“旧”类不会被替换! – 2010-09-22 06:20:53