我想修补一个私有的和属于类的函数,但我也想调用修补的函数。
例子:
class SomeClass:
def __some_function(self, foo):
return do_something()
现在我想写类似的东西
def new_function(self, foo)
if foo == 'bar':
return True
return super(self).__some_function(foo)
SomeClass.__some_function = new_function
我试图用装饰器覆盖它,但调用旧函数时遇到问题,因为它无法访问。我还检查了模拟库,但不明白如何使用参数调用旧函数。
我试过的装饰器:
def patch_something(method):
def new_function(self, foo):
if foo == 'bar':
return True
return method(self, foo)
return new_function
SomeClass.__some_function = patch_something(SomeClass.__some_function)
我收到此错误(该类在另一个文件中 - 这是一个问题吗?)。
AttributeError: type object 'SomeClass' has no attribute '__some_function'