Es difícil encontrar algo que no es posible en un lenguaje dinámico como Python, pero ¿realmente tenemos que abusar de todo? De todos modos, aquí está:
from types import ModuleType
import sys
class JVM(ModuleType):
Foo = 3
sys.modules['JVM'] = JVM
from JVM import Foo
print Foo
Pero un patrón que he visto en varias bibliotecas/proyectos es una especie de función _make_module()
, que crea un ModuleType
forma dinámica e inicializa todo en él. Después de eso, el Módulo actual se reemplaza por el nuevo módulo (usando la asignación a sys.modules
) y la función _make_module()
se elimina. La ventaja de esto es que puede recorrer el módulo e incluso agregar objetos al módulo dentro de ese bucle, lo que a veces es bastante útil (¡pero úselo con precaución!).
¿Por qué? ¿Alguna vez harías esto? –
@ S. Lott En esencia, quiero importar paquetes y las clases de una JVM remota (en un programa de Python) y aunque podría proporcionar un método de importación, me gustaría volver a utilizar la sintaxis de Python. – Barthelemy
"importar paquetes y clases desde una JVM remota"? ¿No es un archivo? ¿Cómo va a funcionar eso? ¿Cómo gestionará la creación de archivos .pyc? ¿Qué pasa con los "archivos"? Ellos trabajan realmente bien. ¿Qué pasa con el montaje remoto de un sistema de archivos? Eso funciona realmente bien. –