1

我有一个 python 文件,其中包含一个更大程序的一部分,即文件用于生成一些相同的数据,但是虽然我会使用这个程序来获取数据,但它是如此之大、旧且无证,以至于没有人知道它是如何工作的。

我需要处理这些文件生成的数据,有没有办法动态模拟这个调用的模块,即我提供了一个我感兴趣的实际方法,然后我为任何未被覆盖的方法调用提供了一个假响应.

我试图通过覆盖 __getattrib__ 方法来做到这一点,但失败了(我没有可用的源代码,因为它被错误地删除了)

4

2 回答 2

2

只是添加被调用的方法不是更容易吗?

但是,是的,您可以使用例如Mock库来伪造它。

于 2013-05-30T10:51:40.423 回答
0

你不能像__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):
        ...
于 2013-05-30T11:56:53.260 回答