Aquí es el patrón que estoy pensando en usar:¿Hay algún 'truco' con este patrón de 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'
En general, prefiero la semántica de acceso atributo de objeto sobre dict acceso get/set, pero hay algunas circunstancias en las que se requiere el acceso dict-como (por ejemplo, d['foo-bar'] = 'baz'
) y prefiero no tener métodos getter setter especiales para estos casos, por lo tanto, el comportamiento dual del objeto dict & al mismo tiempo con atributos compartidos.
¿Hay algún problema con el patrón anterior?
Ver: http://stackoverflow.com/questions/3031219/python-recursively-access-dict-via-attributes-as-well-as-index-access –
'isinstance (dict, object)'. No necesita heredar de 'object'. Y la implementación es más que hacky. También: posible duplicado de [Acceso a claves dict como un atributo en Python?] (Http://stackoverflow.com/questions/4984647/accessing-dict-keys-like-an-attribute-in-python) – delnan
Objetos creados en este la manera puede ser escabechada sin problema pero los objetos creados en el estilo sugerido por la respuesta aceptada no pueden. –