我有一个 python 文件,其中包含一个更大程序的一部分,即文件用于生成一些相同的数据,但是虽然我会使用这个程序来获取数据,但它是如此之大、旧且无证,以至于没有人知道它是如何工作的。
我需要处理这些文件生成的数据,有没有办法动态模拟这个调用的模块,即我提供了一个我感兴趣的实际方法,然后我为任何未被覆盖的方法调用提供了一个假响应.
我试图通过覆盖 __getattrib__ 方法来做到这一点,但失败了(我没有可用的源代码,因为它被错误地删除了)
只是添加被调用的方法不是更容易吗?
但是,是的,您可以使用例如Mock库来伪造它。
你不能像__add__
with那样伪造函数__getattribute__
。
在这里您可以找到所有需要在类端实现的方法,例如__add__
我实现了一个伪造它们的代理。它甚至可以模拟整数。
一旦你覆盖__getattribute__
了这可能会派上用场。
class X(object):
def __getattribute__(self, name): ...
def use_this_getattribute(self):
... # uses getattribute from above
@objectGetattributeFunction
def use_original_getattribute(self):
...