内置vars(obj)
返回一个dict,其中的键/值反映了obj
的属性。这个函数有反转吗?即获取字典并返回对象的函数。
我已经提出了两种方法,对于阅读它的人来说,这两种方式都不会显而易见。第一个版本涉及将新的字典分配给self.__dict__
:
class _Tmp(object):
def __init__(self, dct):
self.__dict__ = dct
obj = _Tmp({'hello': 'world'})
assert obj.hello == 'world'
,第二个版本使用对type
内置的非标准调用:
obj = type('', (), {'hello': 'world'})
assert obj.hello == 'world'
是否有更简单/更易读的方式?
答案 0 :(得分:6)
在Python 3.3及更高版本中,您可以使用types.SimpleNamespace
:
from types import SimpleNamespace
obj = SimpleNamespace(**{'hello': 'world'})
答案 1 :(得分:2)
模块attrdict
可以满足您的需求。