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 に答える