0

可能重复:
像 Python 中的属性一样访问字典键?

有没有办法在python中实现这个

foo = {'test_1': 1,'test_2': 2}
print foo.test_1
>>> 1

也许如果我扩展 dict,但我不知道如何动态生成函数。

4

2 回答 2

1

怎么样:

class mydict(dict):
  def __getattr__(self, k):
    return self[k]

foo = mydict({'test_1': 1,'test_2': 2})
print foo.test_1

您可能还想覆盖__setattr__().

于 2012-12-11T17:22:42.700 回答
0

您可以使用namedtuple实现类似的行为。但唯一的缺点是,它不可变

>>> bar = namedtuple('test',foo.keys())(*foo.values())
>>> print bar.test_1
1
>>> print bar.test_2
2
于 2012-12-11T18:10:47.867 回答