En/na Garito ha escrit:
Eso es justo lo que me queria evitar con un casting pero parece que eso
no es posible en python, cierto?
Podria ser esto otra forma:
En el __setitem__ del yDict habria que poner un trozo de codigo que
recorriese los dict para convertirlos a yDict
Debería funcionar, pero la clase se está volviendo más compleja e
ineficiente cada vez y la cosa no termina aquí. Si d es un yDict y
d["a/b/c"] = "d"
* cual es el resultado de "a/b" in d ? Si la respuesta es True debes
redefinir el método __contains__
* d.get("a/b") devuelve el yDict {"c":"d"} ? Si la respuesta es sí debes
redefinir el método get
* d.keys() devuelve ["a"], ["a/b/c"] o ["a", "a/b", "a/b/c"] ? Si la
respuesta no es ["a"] debes redefinir el método.
* que devuelve d.values(), los values de primer nivel ? los finales ?
* que ocurre si haces d["x/y"] = { "foo" : "bar" } ? d["x/y/foo"] ==
"bar" o dispara un KeyError ?
El uso de una estructura recursiva introduce una sobrecarga importante:
por un lado se realizan un montón de llamadas a funciones y por otro
debes garantizar que la estructura siga siendo recursiva al modificarla.
Llegado a este punto me plantearía si vale la pena seguir por este camino:
* ¿ realmente necesitas que yDict implemente toda la interfaz de un
diccionario ?
* ¿ es imprescindible utilizar recursividad ?
Saludos
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/