3

我想要一个虚拟对象,我可以在 python 中实例化并通过 setattr() 以编程方式创建属性。

我在内置对象上尝试了它,但可能有一个很好的理由,它不起作用。

我可以在 python 中使用什么基础对象来实现这样的目的,而无需自己实际定义一个?

4

3 回答 3

9

您不能使用mock = object(),而只是创建一个 Mock 派生自object

class Mock(object):
    pass

mock = Mock()

setattr(mock, 'test', 'whatever')
于 2012-11-01T19:38:23.757 回答
0

如果您使用模拟库(例如mock),那么您可以断言对象上调用了什么。你可能想也可能不想这样做。

于 2012-11-02T11:36:34.467 回答
0

对 Jon Clement 技术的改进,以防您希望模拟对象在创建时获得一些属性:

class Mock(object):
    def __init__(self, **kwArgs):  # constructor turns keyword args into attributes
       self.__dict__.update(kwArgs)


# now you can do things like this:
options = Mock(verbose=True, debug=False)
于 2013-09-10T14:20:46.900 回答