如何使用 Python 中的另一个变量访问命名空间变量

rod*_*dee 2 python python-3.6

我使用 json 数据创建了一个命名空间,如下所示,从这个SO 答案中学到

>>> 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'
Run Code Online (Sandbox Code Playgroud)

但是如果“名称”来自一个变量,我该如何访问它?

>>> foo='name'
>>> x.foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'types.SimpleNamespace' object has no attribute 'foo'
>>> 
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 5

使用getattr功能:

getattr(x, foo)
Run Code Online (Sandbox Code Playgroud)

会像x.namefoo = 'name'.