<html><body bgcolor="#FFFFFF"><div><br></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.226562); -webkit-composition-frame-color: rgba(77, 128, 180, 0.226562);"><br></span></div><blockquote type="cite"><div>
<br><div class="gmail_quote">2010/10/13 Rolando Espinoza La Fuente <span dir="ltr"><<a href="mailto:darkrho@gmail.com"><a href="mailto:darkrho@gmail.com">darkrho@gmail.com</a></a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2010/10/12 Jose Caballero <<a href="mailto:jcaballero.hep@gmail.com"><a href="mailto:jcaballero.hep@gmail.com">jcaballero.hep@gmail.com</a></a>>:<br>
[...]<br>
<div class="im">> ----------------------------------------------------------------------------<br>
> import modN<br>
><br>
> if hasattr(modN, name):<br>
> return getattr(modN, name)()<br>
> ----------------------------------------------------------------------------<br>
><br>
> ¿No hay forma de hacerlo más automático?<br>
> Lo ideal sería hacer un loop a los módulos que existan en el directorio<br>
> my_libs, de forma que no sea necesario escribir a mano esas dos líneas, uno<br>
> por módulo.<br>
<br>
</div>Puedes reusar el código de `walk_modules` de [1]. Y tener algo como:<br>
<br>
all_modules = walk_modules("my_libs")<br>
<br>
def getobject(name):<br>
for mod in all_modules:<br>
if hasattr(mod, name):<br>
return getattr(mod, name)<br>
<br>
Otra alternativa sería utilizar os.listdir() sobre my_libs, cargar los .py<br>
con __import__().<br>
<br>
Saludos<br>
<br>
[1] <a href="http://hg.scrapy.org/scrapy/file/a6275154f238/scrapy/utils/misc.py#l48" target="_blank"><a href="http://hg.scrapy.org/scrapy/file/a6275154f238/scrapy/utils/misc.py#l48">http://hg.scrapy.org/scrapy/file/a6275154f238/scrapy/utils/misc.py#l48</a></a><br>
<font color="#888888"><br><br></font></blockquote></div></div></blockquote><br><div><br></div><div><br></div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><blockquote type="cite"><div>¿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</div></blockquote><br></span><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.226562); -webkit-composition-frame-color: rgba(77, 128, 180, 0.226562);"><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.285156); -webkit-composition-fill-color: rgba(175, 192, 227, 0.21875); -webkit-composition-frame-color: rgba(77, 128, 180, 0.21875);">¿tendría que mantener a mano ese diccionario o hay forma de hacer que se cree automáticamente?</span></div></body></html>