El 08/10/2010 20:43, Garito escribió:
Hola!
Estoy sobrecargando un diccionario
Quiero poder hacer cosas como

a['a/b/c'] = 'abc'
y que devuelva
{'a': {'b': {'c': 'abc'}}}

para luego poder hacer
a['a/b/c']
y que devuelva
abc

El getter lo tengo ya funcionando usando __getattr__ y __missing__
Tambien tengo el __seattr__ con lo que puedo hacer
setattr(a, 'a/b/c', 'abc')
funcionando correctamente pero me pregunto como tengo que programar el
asunto para poder hacer lo de la 1a orden
a['a/b/c'] = 'abc'

Alguien sabe como?


Con __setitem__, __getitem__ puedes manipular las claves y valores que se pasan al diccionario:

>>> class miDict(dict):
...     def __setitem__(self, key, val):
...         super(miDict, self).__setitem__("KEY_%s" % key, val)
...     def __getitem__(self, key):
...         return super(miDict, self).__getitem__("KEY_%s" % key)
...
>>> d = miDict()
>>> d["a"] = "A"
>>> d
{'KEY_a': 'A'}
>>> d["a"]
'A'


--
Oswaldo Hernández
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a