for*_*ran 5 python inheritance dictionary class
我需要定义一些键值参数来配置类的行为。我的要求有两个:
第一个要求的自然方法是使用 a dict(这样我就可以用循环遍历键、值或项目for),但对于第二个要求,使用类层次结构并让属性查找机制来执行以下操作似乎更合适工作(另外我还得到了其他好处,比如能够使用某些值的属性)。
有没有办法两全其美?
阅读评论后,它不需要是可变的(我不会更改已创建实例的值),它只是用于静态配置。但我可能需要在更具体的实例中添加新值。
我想最后我可以只使用dict.copy+dict.update来表示特定的实例(我可以在没有属性的情况下生活)。
如果你可以使用 python 3.3 ChainMap 正是你想要的。
http://docs.python.org/3.3/library/collections#collections.ChainMap
它基本上是一个字典列表,并将按顺序在每个字典中查找给定的键,直到找到匹配项。
实际上,这是在 2.7 中使用它的代码:
http://code.activestate.com/recipes/305268-chained-map-lookups/