Python中的字典属性

dictionary properties in Python

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Accessing dict keys like an attribute in Python?

有没有办法用python实现这个

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

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


怎么样:

1
2
3
4
5
6
class mydict(dict):
  def __getattr__(self, k):
    return self[k]

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

您可能还需要覆盖__setattr__()


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

1
2
3
4
5
>>> bar = namedtuple('test',foo.keys())(*foo.values())
>>> print bar.test_1
1
>>> print bar.test_2
2