Errata 'a/b' in d -> True
Perdon por la pajara mental! (me he repasado el texto 2 veces pero he encontrado la errata a la 3a que ya era despues de enviar) Disculpas El 12 de octubre de 2010 19:24, Garito <gar...@gmail.com> escribió: > Hola Alexis! > En realidad lo que busco es poder hacer con un diccionario lo que se puede > hacer en un entorno web: utilizar urls para los getters y los setters igual > que utilizo urls para los GET y POST del web > > Mi intencion de que sean tan recursivos como se pueda es porque en un arbol > en el que se defina el nodo como clase si que hay una ventaja muy grande al > hacerlos recursivos y un diccionario es el arbol mas simple que existe para > python > > Yo, en mi estilo que programacion, quiero poder usar > > a['a/b/c'] = 'un valor' > a['a/b/c'] -> 'un valor' > hasattr('a/b/c') -> True > > y poco mas > > A tus preguntas: > > 'a/b' in d -> False puesto que d no es ni un contenido de a y b. En todo > caso 'c' in d['a/b'] seria True > > d.get('a/b') es una construccion que no utilizo pero supongo que igual que > una vez hecho el __getitem__ hacer el getattr es sobre cargar el __missing__ > llamando al __getitem__ ya definido, intuyo que se puede hacer lo mismo con > el get utilizando 2 lineas de codigo (algo asumible) > > def get(self, valor): > return self.__getitem__(valor) > > d.keys() -> ['a'] puesto que el primer nivel del arbol solo contiene a. Lo > que si que querria seria d['a/b'].keys() -> ['c'] > > d.values() -> [{'b': {'c': 'un valor'}}] igual que devolveria un dict > normal > > Si d['x/y'] = {'foo': 'bar'} entonces d['x/y/foo'] == 'bar' -> True puesto > que el valor para la url x/y/foo en ese diccionario es bar > > Como puedes ver mi yDict se comportaria exactamente igual que un > diccionario pero en los getter y setter quiero tener la opcion de que se > comporten como un servidor web pues eso es lo que estoy programando > > Quiero poder utilizar la frase de que TODO ES UNA URL > > Y en cuanto a la recursividad en este caso las ventajas en un diccionario > son poco claras puesto que el codigo resultante de hacerlo recursivo a no > hacerlo es practicamente del mismo tamaño (que no complejidad) > > Entonces porque recursivo? Porque el arbol es un fractal y el mecanismo de > fractalidad en la programacion es la recursividad pero este concepto no es > el que mas solemos dominar los programadores asi que cuanto mas y mas > profundamente este implementado este concepto mas natural acabara siendo (un > solo modo de pensar es mas simple que varios) > > En cuanto a la programacion de un servidor web recursivo la cosa cambia > pues la diferencia de cantidad de codigo y de complejidad si que son muy > diferentes de programarlo de una forma u otra (y, en este caso, la > recursividad gana de goleada una vez integrado el concepto en nuestro coco) > > Despues de 7 años reprogramando mi manera de ver las cosas en la > informatica (y en la vida), el fractal arbol emergio con tanta potencia que > no tengo ninguna duda de lo que estoy diciendo (tendrias que ver los codigos > que llegue a hacer antes de darme cuanta de esto! Y tu, en concreto, ya > estuviste en contacto con esta busqueda en la lista de zope! Y ya entonces > me decias que igual deberia cambiar mi forma de ver las cosas!!! ;) ) > > Pues te parecera una chorrada y/o una frivolidad pero es que he llegado a > soñar con el codigo cuando estuviese escrito del todo!!! Y era > recursivo!!!!!! (no se me quita de la cabeza la parte en que aparecia self() > en el sueño) > > Que me puedo estar equivocando? SI!!! puede ser. Pero deberias ver lo bien > que se programa cuando utilizas un arbol como codigo fuente!! -> > http://www.flickr.com/photos/92578...@n00/tags/yanged/ > > Y las pedazo de ventajas que tiene para programar!!! Y para grupos de > trabajo distribuidos!!! Estuve haciendo un arbol con un amigo en > http://www.mindmeister.com/ con el colega al Skype y los dos modificando > el arbol a la vez y en 1/2 hora teniamos hecho el trabajo de 4!!!!! > > Como voy a dejar esta manera de pensar cuando no paran de surgir nuevas > ventajas dia tras dia???!!! > Como voy a dejar esta manera de pensar cuando los cientificos no paran de > encontrar fractales en la realidad???!!! > La realidad misma es un fractal!!! > > Saludos y muchisimas gracias por tu interes. Si huviese tenido una charla > asi hace 6 años ahora haria ese tiempo que Yanged (mi proyecto) seria una > tecnologia mas del ecosistema actual > > El 12 de octubre de 2010 14:50, Alexis Roda < > alexis.roda.villalo...@gmail.com> escribió: > > 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/ >> > > > > -- > 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/