Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我想用python创建一个模拟对象_Python_Object_Setattr - Fatal编程技术网

I';我想用python创建一个模拟对象

I';我想用python创建一个模拟对象,python,object,setattr,Python,Object,Setattr,我想要一个可以在python中实例化的虚拟对象,并通过setattr()以编程方式为其创建属性 我在内置对象上尝试了它,但可能是因为一个很好的原因,它不起作用 在python中,我可以使用什么样的基本对象来实现这些目的,而不是自己定义一个对象?您不能使用mock=object(),而只需创建一个从对象派生的mock class Mock(object): pass mock = Mock() setattr(mock, 'test', 'whatever') 如果您使用模拟库(例如

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

我在内置对象上尝试了它,但可能是因为一个很好的原因,它不起作用


在python中,我可以使用什么样的基本对象来实现这些目的,而不是自己定义一个对象?

您不能使用
mock=object()
,而只需创建一个从
对象派生的mock

class Mock(object):
    pass

mock = Mock()

setattr(mock, 'test', 'whatever')

如果您使用模拟库(例如),那么您可以对对象上调用的内容进行断言。您可能想这样做,也可能不想这样做。

这是对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)