python - 有没有 `vars(object)`的逆

标签 python

内置的 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/

相关文章:

python - 获取应用程序错误 : 2 in GAE PyDev application when deployed on app engine. 在本地工作正常

python - 创建带条件的重叠数组 - Python

python - 位置参数和关键字参数的求值顺序

python - Django 索引未考虑现有表

python - 理解Python多重赋值

python - 如何将 Pyspark Dataframe header 设置为另一行?

python - 范围和方面; matplotlib 中具有共享轴的图像中的方形像素

Python加载json帮助器方法不起作用

python - 如何映射到字典

dictionary - Python:获取字典中与key关联的所有值,其中的值可能是一个列表,也可能是单个项