在Python中创建具有嵌套属性的空对象
我正在尝试创建一个包含嵌套属性的空对象,如下所示:在Python中创建具有嵌套属性的空对象,python,object,attributes,nested,Python,Object,Attributes,Nested,我正在尝试创建一个包含嵌套属性的空对象,如下所示: form = type('', (), {})() form.foo.data = '' 但我得到以下属性错误: >>> form = type('', (), {})() >>> form.foo.data = '' Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeErr
form = type('', (), {})()
form.foo.data = ''
但我得到以下属性错误:
>>> form = type('', (), {})()
>>> form.foo.data = ''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'data'
>>form=type(“”,(),{})()
>>>form.foo.data=“”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“str”对象没有属性“data”
我应该如何构造对象来实现这一点?根据type函数,第三个参数应该是dictionary的形式。因此,对于嵌套属性,可以先创建对象,然后在字典中使用它。 像这样的东西可能有用-
da = type('',(),{'data':1})
a = type('',(),{'foo':da})
我不明白你的意思,但你可以用
命名双倍
>>>from collections import namedtuple
>>>foo = namedtuple('foo', "data tuple dict")
>>>foo.data = ""
''
>>> foo.tuple = ()
>>> foo.tuple
()
您想如何使用它?那么类构造函数将是WTForms
中的Form
类。但在这种情况下,我只想创建一个“假”对象,它只包含以下属性:form.foo.data
或form.bar.data
等等。@Navidad20它是用于测试用例的。我需要手动分配这些属性的值。这种方法看起来不错,但我认为我们有一种“更好”的方法来处理MagicMock,