Ich lerne Python, und wie immer bin ich ehrgeizig mit meinen Startprojekten. Ich arbeite an einem Plugin-System für ein Community-Toolkit für App Engine. Meine Plugin-Superklasse hat eine Methode namens install_path
. Ich möchte die __path__
für die __module__
für self
erhalten (was in diesem Fall die Unterklasse sein wird). Problem ist, __module__
gibt eine str
anstelle der Modulinstanz zurück. eval()
ist unzuverlässig und unerwünscht, so brauche ich eine gute Möglichkeit, meine Hände auf die eigentliche Modul-Instanz, die keine eval
Ling die str
Ich komme zurück von __module__
.Wie bekomme ich die Modul-Instanz für eine Klasse in Python?
10
A
Antwort
11
Die sys.modules
dict enthält alle importierten Module, so können Sie verwenden:
mod = sys.modules[__module__]
1
Wie wäre es Importing modules
X = __import__(‘X’)
Werke wieimport X
, mit dem Unterschied, dass man 1) die Modulnamen als String übergeben, und 2) ausdrücklich ein in Ihrem aktuellen Namespace Variable zuweisen.
Sie könnten den Modulnamen (anstelle von 'X') übergeben und die Modulinstanz zurückholen. Python stellt sicher, dass Sie das gleiche Modul nicht zweimal importieren, daher sollten Sie die Instanz, die Sie zuvor importiert haben, zurückholen.
1
Alternativ Sie global das Moduls können __file__
variable, wenn alles, was Sie wollen den Weg des Moduls ist.
Verwandte Themen
- 1. Rspec wie Modulinstanz Methode stub?
- 2. Wie bekomme ich die Keycodes in Python
- 3. Wie bekomme ich die Div-Klasse, die eine andere spezifische Div-Klasse in Python mit Beautifulsoup enthält?
- 4. Wie bekomme ich die Systeminfo mit Python?
- 5. Wie bekomme ich Python-Dev für Windows?
- 6. Wie kann ich eine umschließende Klasse für eine andere Klasse in Python definieren?
- 7. Wie bekomme ich eine Konstante in Java mit Klasse
- 8. Kann ich DeserializeWithLengthPrefix eine C# -Klasse in eine Python-Klasse?
- 9. Wie bekomme ich eine Instanz einer bestimmten Klasse in PHP?
- 10. Wie bekomme ich die Definitionsreihenfolge der Klassenattribute in Python?
- 11. Wie bekomme ich Python-Steuerelemente in die Toolbox in VisualStudio
- 12. Wie bekomme ich die Klasse einer Klasseneigenschaft in PHP
- 13. Wie bekomme ich die UTC-Zeit in Python?
- 14. Annotation Processor - Wie bekomme ich die Klasse, die es verarbeitet
- 15. Wie bekomme ich die Bildschirmauflösung? Für eine WinRT-App?
- 16. Wie bekomme ich eine Liste von Methoden in einer Python-Klasse?
- 17. Wie bekomme ich Python-Ausnahmetext
- 18. python - Wie bekomme ich die Anzahl der aktiven Threads, die von einer bestimmten Klasse gestartet wurden?
- 19. Wie erstelle ich eine Python-Klasse in C?
- 20. Wie bekomme ich die aktuelle offene Dateizeile in Python?
- 21. Wie bekomme ich eine Liste aller öffentlichen Variablen, die ich in einer Klasse habe? (C#)
- 22. Wie bekomme ich die Außenkontur eines Grundrisses in Python?
- 23. Wie bekomme ich nur die Unterordner meines CWD in Python
- 24. Wie bekomme ich die Desktop-Auflösung in Mac über Python?
- 25. Wie bekomme ich die Klasse eines Feldes vom Typ T?
- 26. Wie bekomme ich die Klasse zu einem Array-Typ?
- 27. Implementierung Kreuzung Operator für eine Set-wie-Klasse in Python
- 28. Wie kann ich die C++ - Klasse in Python verwenden?
- 29. Wie verwende ich eine ITK-Klasse in Python
- 30. Wie bekomme ich Python-Bibliotheken in Pyspark?
Nun, das scheint zu funktionieren. Ich hoffe irgendwie auf eine sauberere Lösung, aber wenn nichts anderes kommt, werde ich es akzeptieren. –
Beachten Sie, dass wenn Sie '__import __ ('foo.bar')', es das 'foo' Modul zurückgibt, nicht' foo.bar'. Weitere Informationen finden Sie in den '__import__' -Dokumenten. –
Nun, es gibt ein paar gute Gründe, warum Lukas Lösung viel besser ist. –