我考虑使用的模式是:
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方法,因此,同时具有字典和对象的双重行为,并共享属性。
上述模式是否存在任何问题?
isinstance(dict, object)
。你不需要从object
继承。而且实现方式也很粗糙。同时,这可能是Python中像属性一样访问字典键的问题的重复。 - user395760