动态猴子补丁 a python 2.7 class
Dynamically monkey patch a python 2.7 class
想知道是否有人有好的方法动态检查 class 的函数类型,然后动态猴子修补装饰器到其中一些函数。我正在尝试这个但没有得到我期望的结果。遍历 class 中的方法似乎可行,但做猴子补丁本身似乎失败了。非常感谢任何想法!
def decorator(callable):
pass
class Test(object):
def foo1(self):
return self.bar()
def foo2(self):
return self.blah()
def foo3(self):
return 0
for x,y in Test.__dict__.items():
if type(y) == FunctionType:
Test.x = decorator(Test.x)
当然 Test.x
不存在,这将引发 AttributeError
。您可以为此使用 setattr
。 x.__dict__
对我来说也很难看,我会用 vars(x)
代替。
for x,y in vars(Test).items():
if type(y) == FunctionType:
setattr(Test, x, decorator(y))
想知道是否有人有好的方法动态检查 class 的函数类型,然后动态猴子修补装饰器到其中一些函数。我正在尝试这个但没有得到我期望的结果。遍历 class 中的方法似乎可行,但做猴子补丁本身似乎失败了。非常感谢任何想法!
def decorator(callable):
pass
class Test(object):
def foo1(self):
return self.bar()
def foo2(self):
return self.blah()
def foo3(self):
return 0
for x,y in Test.__dict__.items():
if type(y) == FunctionType:
Test.x = decorator(Test.x)
当然 Test.x
不存在,这将引发 AttributeError
。您可以为此使用 setattr
。 x.__dict__
对我来说也很难看,我会用 vars(x)
代替。
for x,y in vars(Test).items():
if type(y) == FunctionType:
setattr(Test, x, decorator(y))