我想要一个虚拟对象,我可以在 python 中实例化并通过 setattr() 以编程方式创建属性。
我在内置对象上尝试了它,但可能有一个很好的理由,它不起作用。
我可以在 python 中使用什么基础对象来实现这样的目的,而无需自己实际定义一个?
您不能使用mock = object()
,而只是创建一个 Mock 派生自object
class Mock(object):
pass
mock = Mock()
setattr(mock, 'test', 'whatever')
如果您使用模拟库(例如mock),那么您可以断言对象上调用了什么。你可能想也可能不想这样做。
对 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)