这里是我想使用的模式:这个Python模式有什么“陷阱”吗?
class Dicty(dict):
def __init__(self):
self.__dict__ = self
d = Dicty()
d.foo = 'bar'
print d['foo']
>>> bar
d['foo'] = 'baz'
print d.foo
>>> 'baz'
一般来说,我更喜欢字典的get/set访问对象属性访问的语义,但也有在需要类似字典的访问某些情况下(例如,d['foo-bar'] = 'baz'
),我宁愿不要为这些情况设置特殊的getter setter方法,因此,同时还需要共享属性的对象的双重行为。
是否有任何与上述模式陷阱?
请参阅:http://stackoverflow.com/questions/3031219/python-recursively-access-dict-via-attributes-as-well-as-index-access – 2011-02-16 19:19:39
isinstance(dict,object)`。你不需要从`object`继承。实施不仅仅是黑客行为。此外:可能重复[访问像Python中的属性字典键?](http://stackoverflow.com/questions/4984647/accessing-dict-keys-like-an-attribute-in-python) – delnan 2011-02-16 19:21:12