在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,