内置的 vars(obj)
返回一个字典,其中的键/值反射(reflect)了 obj
的属性。这个函数有反函数吗? IE。一个接受字典并返回对象的函数。
我想出了两种方法,但对于阅读它的人来说,这两种方法都不明显。第一个版本涉及将新字典分配给 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'
有没有更简单/更易读的方法?
最佳答案
在 Python 3.3 及更高版本中,您可以使用 types.SimpleNamespace
:
from types import SimpleNamespace
obj = SimpleNamespace(**{'hello': 'world'})
关于python - 有没有 `vars(object)`的逆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27668891/