[Python-es] Equivalente a __missing__ para el setter
Alexis Roda
alexis.roda.villalonga en gmail.com
Sab Oct 9 23:13:27 CEST 2010
En/na Garito ha escrit:
> Me gustaria que el acceso a estas funciones sea recursivo
¿ por algún motivo en especial ?
> 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)
¿Que debería ocurrir con este código?
d = yDict()
d["a/b"] = 1
d["a/b/c"] = 2
Saludos
Más información sobre la lista de distribución Python-es