È difficile trovare qualcosa che non sia possibile in un linguaggio dinamico come Python, ma abbiamo davvero bisogno di abusare di tutto? In ogni caso, qui è:
from types import ModuleType
import sys
class JVM(ModuleType):
Foo = 3
sys.modules['JVM'] = JVM
from JVM import Foo
print Foo
Ma un modello che ho visto in diverse biblioteche/progetti è una sorta di una funzione _make_module()
, che crea un ModuleType
in modo dinamico e inizializza tutto ciò che contiene. Successivamente, il modulo corrente viene sostituito dal nuovo modulo (utilizzando l'assegnazione a sys.modules
) e la funzione _make_module()
viene eliminata. Il vantaggio è che puoi eseguire il looping del modulo e persino aggiungere oggetti al modulo all'interno di quel ciclo, il che è abbastanza utile a volte (ma usalo con cautela!).
Perché? lo faresti mai? –
@ S.Lott In sostanza, voglio importare pacchetti e classi da una JVM remota (in un programma Python) e sebbene possa fornire un metodo di importazione, vorrei riutilizzare la sintassi di Python. – Barthelemy
"importa pacchetti e classi da una JVM remota"? Non un file? Come andrà a lavorare? Come gestirai la creazione di file .pyc? Cosa c'è di sbagliato con "file"? Funzionano davvero bene. Cosa c'è di sbagliato con il montaggio remoto di un file system? Funziona davvero bene. –