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 Gracias! El 11 de octubre de 2010 10:15, Alexis Roda < alexis.roda.villalo...@gmail.com> escribió: > En/na Garito ha escrit: > >> yDict({"a": {"b": {"c": "abc"}}}) -> {'a': {'b': {'c': 'abc'}}} >> > > Para que yDict funcione todo valor que no sea "final" debe ser a su vez un > yDict (es una estructura recursiva). Si pasas una serie de diccionarios > anidados al constructor este no los convierte en yDict. > > Para verlo más claro añade el método: > > def __repr__(self) : > return "<yDict {%s}>" % ", ".join( > ["%r : %r" % (k, v) for k, v in self.items()] > ) > > > In [1]: d = yDict({"a": {"b": {"c": "abc"}}}) > In [2]: d > Out[2]: <yDict {'a' : {'b': {'c': 'abc'}}}> > In [3]: dd = yDict() > In [4]: dd["a/b/c"] = "abc" > In [5]: dd > Out[5]: <yDict {'a' : <yDict {'b' : <yDict {'c' : 'abc'}>}>}> > > En [2] los diccionarios "interiores" no son instancias de yDict, en [5] sí. > Deberás redefinir '__init__' para que la instancia se inicialice > correctamente. También deberás redefinir el método 'setdefault' y > posiblemente otros para garantizar que la semántica de yDict sea > consistente. > > > > > > > Saludos > _______________________________________________ > 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
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/