我正在使用一个返回嵌套字典的包。 当其他所有内容都在对象语法中时,用字典语法访问类方法中的返回对象会让人感到尴尬。 搜索把我带到了bunch/neobunch包,它似乎实现了我的目标。我还看到建议使用namedtuples,但是这些并不容易支持嵌套属性,而且大多数解决方案都依赖于在namedtuple中使用字典进行嵌套。在
实现这一目标的更自然的方法是什么?在
data = {'a': 'aval', 'b': {'b1':{'b2a':{'b3a':'b3aval','b3b':'b3bval'},'b2b':'b2bval'}} }
print(data['b']['b1']['b2a']['b3b']) # dictionary access
# print(data.b.b1.b2a.b3b) # desired access
import neobunch
data1 = neobunch.bunchify(data)
print(data1.b.b1.b2a.b3b)
使用
__setattr__
方法怎么样?在可以使用基于基本对象构建的简单类:
我借用了
argparse.Namespace
定义,对其进行了调整以允许嵌套。在它将被用作
^{pr2}$它也可以用
**kwargs
(与*args
)一起定义。一个__repr__
的定义可能也不错。在与其他简单对象一样,可以添加属性,例如
f.c = f
(递归定义)。vars(f)
返回一个字典,尽管它不进行任何递归转换)。在下面的类可以让你做你想做的事情:
相关问题 更多 >
编程相关推荐