这个问题已经有了答案:
我使用json数据创建了一个名称空间,如下所示 SO answer
>>> from __future__ import print_function >>> import json >>> from types import SimpleNamespace as Namespace >>> data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}' >>> x = json.loads(data, object_hook=lambda d: Namespace(**d)) >>> x.name 'John Smith'
但如果“name”来自变量,我如何访问它?
>>> foo='name' >>> x.foo Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'types.SimpleNamespace' object has no attribute 'foo' >>>
使用 getattr 功能:
getattr
getattr(x, foo)
将作为 x.name 什么时候 foo = 'name' .
x.name
foo = 'name'