是否存在`vars(object)`的反转

时间:2014-12-27 15:56:32

标签: python

内置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'

是否有更简单/更易读的方式?

2 个答案:

答案 0 :(得分:6)

在Python 3.3及更高版本中,您可以使用types.SimpleNamespace

from types import SimpleNamespace

obj = SimpleNamespace(**{'hello': 'world'})

答案 1 :(得分:2)

模块attrdict可以满足您的需求。