代码之家  ›  专栏  ›  技术社区  ›  rodee

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

  •  1
  • rodee  · 技术社区  · 7 年前

    我使用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'
    >>> 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   heemayl    7 年前

    使用 getattr 功能:

    getattr(x, foo)
    

    将作为 x.name 什么时候 foo = 'name' .

    推荐文章