假设我有一个现有的python 2.7类:
class TestClass(object):
def foo1(self):
return self.foo2()
def foo2(self):
return self.foo3()
def foo3(self):
return 'Hello World!'
在运行时是否有办法动态地将(修补程序)装饰器(@testdecorator)添加到现有的三个方法foo1,foo2和foo3中?
提前感谢您的任何建议!
答案 0 :(得分:2)
这听起来像是一件可怕的事情,但它完全有可能。 TestClass.foo1 = testdecorator(TestClass.foo1)
只是语法糖;你可以做很多事情:
mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-scala -DarchetypeVersion=0.8.1
答案 1 :(得分:1)
是:
TestClass.foo1 = testdecorator(TestClass.foo1)
等等。
如果你想在特定的实例而不是在课堂上修补它,那也是可行的,尽管它可以多做一些工作。