[Python-es] Equivalente a __missing__ para el setter

Garito garito en gmail.com
Sab Oct 9 23:28:18 CEST 2010


El 9 de octubre de 2010 23:13, Alexis Roda <alexis.roda.villalonga en gmail.com
> escribió:

> En/na Garito ha escrit:
>
>  Me gustaria que el acceso a estas funciones sea recursivo
>>
>
> ¿ por algún motivo en especial ?
>
> Si, claro. Desde mi analisis la naturaleza es claramente fractal y la base
para la fractalidad es la recursividad
Ahorra codigo y convierte el que pones en algo donde la responsabilidad bien
colocada es un gol extra

>
> > La pregunta seria: hay alguna forma de cambiarle el tipo
> > (momentaneamente) sin crear otro objeto? O dicho de otra forma: puedo
> > hacer un cast momentaneo?
>
> Creo que lo que buscas es 'super':
>
> class yDict(dict) :
>    def __getitem__(self, clave):
>        partes = clave.split('/', 1)
>        if len(partes) > 1 :
>            return super(yDict, self).__getitem__(partes[0])[partes[1]]
>        else:
>            return super(yDict, self).__getitem__(partes[0])
>
>    def __setitem__(self, clave, valor) :
>        partes = clave.split("/", 1)
>        if len(partes) > 1 :
>            super(yDict, self).setdefault(partes[0], yDict())[partes[1]] =
> valor
>        else :
>            super(yDict, self).__setitem__(partes[0], valor)
>

Podria ser perfectamente, revisare este codigo a ver que me surge, gracias!

>
> ¿Que debería ocurrir con este código?
>
> d = yDict()
> d["a/b"] = 1
>

d = {'a': {'b': 1}}


> d["a/b/c"] = 2


d = {'a': {'b': {'c': 2}}}

Gracias por tu ayuda, parece que tu y yo seguimos teniendo esa relacion de
siempre en estas listas
Saludos

>


>
>
> Saludos
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Mi twitter: http://twitter.com/garito

Temet nosce
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20101009/5037856f/attachment.html>


Más información sobre la lista de distribución Python-es