Sto imparando Python e, come sempre, sono ambizioso con i miei progetti di avviamento. Sto lavorando su un sistema di plugin per un toolkit del sito della community per App Engine. La mia superclasse plugin ha un metodo chiamato install_path
. Vorrei ottenere il __path__
per il __module__
per self
(che in questo caso sarà la sottoclasse). Il problema è che __module__
restituisce un valore str
anziché l'istanza del modulo stesso. eval()
è inaffidabile e indesiderabile, quindi ho bisogno di un buon metodo per mettere le mani sull'istanza del modulo reale che non coinvolge lo str
str
torno da __module__
.Come ottengo l'istanza del modulo per una classe in Python?
10
A
risposta
11
Il sys.modules
dict contiene tutti i moduli importati, in modo da poter utilizzare:
mod = sys.modules[__module__]
1
Come circa Importing modules
X = __import__(‘X’)
opere comeimport X
, con la differenza che si 1) passa il nome del modulo come una stringa, e 2) assegnare esplicitamente a una variabile nello spazio dei nomi corrente.
È possibile passare il nome del modulo (anziché "X") e richiamare l'istanza del modulo. Python assicurerà di non importare lo stesso modulo due volte, quindi dovresti recuperare l'istanza che hai importato in precedenza.
1
In alternativa, è possibile utilizzare il modulo del globale __file__
variable se invece si è percorso del modulo.
Problemi correlati
- 1. Python una classe per modulo e pacchetti
- 2. Utilizzo della sfinge per auto-documentare una classe python, modulo
- 3. Uso obsoleto di una classe come classe genitore in Python
- 4. Come ottengo il nome della classe del genitore in Ruby
- 5. Come ottengo il nome del modulo di una definizione di classe di un oggetto piuttosto che il nome del modulo dell'istanziazione dell'oggetto?
- 6. metti in classe/modulo caricato in python
- 7. Come ottengo le costanti definite dalla classe del modulo di Ruby tramite riflessione?
- 8. Come ottengo il completamento del codice per Node.js in Eclipse?
- 9. layout del modulo python
- 10. In Python, come ottengo il frame corrente?
- 11. Dipendenze del modulo incrociato in Boost Python
- 12. Come utilizzare una classe ITK in Python
- 13. Python: un singolo modulo (file .py) per ogni classe?
- 14. Cosa mettere in una docstring del modulo python?
- 15. Come importare una classe modulo di back-end in un modulo applicazione in Android Studio
- 16. Come ottengo intellisense in app.config per una sezione personalizzata?
- 17. Come scrivere una direttiva Angolare per aggiornare la classe CSS in base alla convalida del modulo
- 18. Come estendere una classe in python?
- 19. Come falsificare/proxy una classe in Python
- 20. In python, quali sono i pro e i contro dell'importazione di una classe e dell'importazione del modulo della classe?
- 21. Come cloni una classe in Python?
- 22. Come definire una classe in Python
- 23. Creazione di una classe Python per "una sola istanza"?
- 24. Come copiare una classe python?
- 25. come accedere a una classe da una DLL in python?
- 26. Perché ottengo questo NameError in un generatore all'interno di una definizione di classe Python?
- 27. Utilizzo del modulo Python sas7bdat
- 28. Posso utilizzare una classe C++ in classe Python come superclasse
- 29. Importazione dinamica del modulo Python
- 30. Attributi del modulo Python `this`
Bene, questo sembra funzionare. Spero un po 'per una soluzione più pulita, ma se nient'altro arriva, lo accetto. –
Si noti che se si esegue '__import __ ('foo.bar')', verrà restituito il modulo 'foo', non' foo.bar'. Vedi i documenti '__import__' per i dettagli. –
Beh, ci sono un paio di buoni motivi per cui la soluzione di Lukas è molto meglio. –