Hola!
Al final la opcion __getitem__ / __setitem__ se ha demostrado como la
correcta: bien por los que la recomendasteis, muy cracks!

En estos momentos tengo el codigo necesario para acceder al diccionario como
yo queria, bueno, casi

Me gustaria que el acceso a estas funciones sea recursivo con lo que este
codigo funciona para el getter:

def __getitem__(self, clave):
        partes = clave.split('/')
        if len(partes) > 1: return
yDict.__getitem__(yDict(dict.__getitem__(self, partes[0])),
'/'.join(partes[1:]))
        else: return dict.__getitem__(self, partes[0])

Pero para que esto sea posible, como podeis ver, hay que ir creando
subobjetos yDict para poder usar la funcion customizada (cast)

Lo malo de esta tecnica es que el subdiccionario se tiene que ir cambiando
de tipo creando otro yDict nuevo

Logicamente, cuando se lee todo va bien pero cuando se tiene que modificar,
pues no (el subdiccionario, al pasar a yDict, se convierte en una copia)

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?

Gracias!

El 9 de octubre de 2010 00:12, Garito <gar...@gmail.com> escribió:

> Manuel, Oswaldo, me pongo a revisar a ver que me encuentro, gracias, ahora
> respondo
>
> Juan, a
> Lo que busco es sobrecargar el setter del diccionario. Dame un rato que
> mire lo que me han pasado y luego comento (estoy algo calentorro con esto,
> conceptualmente, que me cuesta despistarme)
>
> Saludos, y gracias! Ahora vuelvo!!
>
> El 8 de octubre de 2010 22:04, Juan Ignacio <euriba...@gmail.com>escribió:
>
>> No acabo de entenderte, si con tu nuevo diccionario haces
>>
>>
>> >>> a['a/b/c'] = 'abc'
>>
>> ¿Qué se supone que tiene que devolver cuando haces el get, o sea, cuando
>> accedes a a['a/b/c']?
>>
>> Opción a) {'a': {'b': {'c': 'abc'}}}
>>
>> Opción b) 'abc'
>>
>> Tampoco entiendo:
>>
>>
>> >Quiero poder hacer cosas como
>>
>> >>> a['a/b/c'] = 'abc'
>>
>> y que devuelva
>>
>> >>> {'a': {'b': {'c': 'abc'}}}
>>
>>
>> a['a/b/c'] = 'abc' es una sentencia y no devuelve ningún valor.
>>
>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es@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
>



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

Temet nosce
_______________________________________________
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