Buenas, gracias a todos por el interes. Creo que me ha quedado bastante claro el asunto.
- Yeiniel me ha gustado tu solución, solo que yo la utilizaría con la sintaxis que ha utilizado Juan. - Sergio, no estoy intentando resolver ningún problema, solamente estoy "jugando" con los decoradores y viendo de lo que son capaces. Y mi pregunta surge desde ese interes. - Y enlazando la frase anterior, gracias Txema por tu post, ya que bien explicas para que son bueno los decoradores y para que no. Ander. P.D.: Perdón por el fallo ortográfico en el asunto del correo, me he dado cuenta tarde de haber metido la pata. La costumbre... El día 21 de octubre de 2013 18:48, Txema Vicente <tx...@nabla.net> escribió: > Buenas. > > Aunque puedas usar decoradores para ampliar la clase que decoran, yo no veo > los decoradores como sustitutos de la herencia, ni ninguna reduccion de > codigo. > > No necesitas decoradores para hacer eso, puedes asignar una funcion a un > atributo de la clase (B.F = F). Ademas, como te pongas a crear clases > decoradas que se amplian en ejecucion, a ver como lo explicas luego. > > Los decoradores vienen bien, por ejemplo, para "enchufar" funciones que van > a manejar algo, como funciones que van a tratar los eventos de un GUI, o > responder en una ruta URL @ruta("/admin"). Dependiendo de lo que quieras > hacer, sera con una funcion o con una clase, con argumentos o sin ellos. > > Tambien tienes el decorador @classmethod por si quieres crear clases que > puedan tener casos particulares (miclase = B.ampliada_con_F()), o actuar > como "factoria" de clases. > Y @staticmethod, que yo solo lo uso en raras ocasiones por motivos de > organizacion de API. > > La herencia es algo claro y maravilloso que te permite organizar las cosas. > El decorador es un "atajo del idioma" para trastear con las funciones, no > hay nada que realmente no puedas hacer sin usarlo. > > > El 21/10/2013 15:37, Ander Garmendia escribió: > > Buenas, > > estoy 'jugando' con decoradores y haciendo diferentes pruebas y tengo > una duda que quizá alguien me pueda aclarar. > > Digamos que tenemos una clase ( llamemosla B ) a la que queremos > añadir una funcionalidad (llamemosla F). El método clásico sería > heredar desde la clase base ( B ) y crear una nueva clase ( llamemosla > C ) que implementase nuestra funcionalidad ( F ). Hasta aquí todo > normal y corriente. > > Ahora llega python y nos ofrece los decoradores, por lo tanto, podemos > crear una clase decoradora ( llamemosla D ) que implemente la > funcionalidad ( F ) y que decorando una clase ( volvamos a la clase B > ), añade la funcionalidad F en la clase B sin necesidad de herencias > de ningún tipo. > > Visto así, todo parece muy cómodo, se escribe menos código, hay menos > clases implicadas, etc. > Y como todo parece muy bonito, aquí surge mi duda: ¿Está esta practica > extendida al escribir código en python ( es pythonico y aceptable ) ? > ¿ o es mas una prueba conceptual ? > > Gracias de antemano y un saludo. > > Ander. > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/