[Python-es] búsqueda automática de clases en un paquete

Juan Ignacio euribates en gmail.com
Mie Oct 13 12:16:56 CEST 2010


¿Puedes hacer que todas esas clases deriven de una sola? De esa forma
podrías hacer que en la clase base se mantuviera un registro de todas las
clases derivadas, usando un diccionario,p.e. que mapeara nombre de clase->
clase, o nombre de clase -> (modulo, clase), o algo similar.

2010/10/13 Rolando Espinoza La Fuente <darkrho en gmail.com>

> 2010/10/12 Jose Caballero <jcaballero.hep en gmail.com>:
> [...]
> >
> ----------------------------------------------------------------------------
> > import modN
> >
> >         if hasattr(modN, name):
> >                 return getattr(modN, name)()
> >
> ----------------------------------------------------------------------------
> >
> > ¿No hay forma de hacerlo más automático?
> > Lo ideal sería hacer un loop a los módulos que existan en el directorio
> > my_libs, de forma que no sea necesario escribir a mano esas dos líneas,
> uno
> > por módulo.
>
> Puedes reusar el código de `walk_modules` de [1]. Y tener algo como:
>
> all_modules = walk_modules("my_libs")
>
> def getobject(name):
>    for mod in all_modules:
>        if hasattr(mod, name):
>            return getattr(mod, name)
>
> Otra alternativa sería utilizar os.listdir() sobre my_libs, cargar los .py
> con __import__().
>
> Saludos
>
> [1] http://hg.scrapy.org/scrapy/file/a6275154f238/scrapy/utils/misc.py#l48
>
> Rolando Espinoza La fuente
> www.insophia.com
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Juan Ignacio Rodríguez de León
Movil: 605 890514
E-Mail: euribates en gmail.com
http://www.tenerife-lanparty.com/
http://elornitorrincoenmascarado.blogspot.com/
http://descon2.com/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20101013/74e3f2c4/attachment.html>


Más información sobre la lista de distribución Python-es