在python中伪造一个对象

时间:2013-05-30 10:47:49

标签: python object

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您不能使用__add__假冒__getattribute__等功能。

Here您可以找到需要在班级实施的所有方法,例如__add__

我实施了Proxy that fakes他们。 它甚至可以模拟整数。

覆盖后__getattribute__ this可能会派上用场。

class X(object):
    def __getattribute__(self, name): ...

    def use_this_getattribute(self):
        ... # uses getattribute from above

    @objectGetattributeFunction
    def use_original_getattribute(self):
        ...