[Python-es] búsqueda automática de clases en un paquete
Rolando Espinoza La Fuente
darkrho en gmail.com
Mie Oct 13 03:00:09 CEST 2010
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
Más información sobre la lista de distribución Python-es