Dynamisches Laden von Klassen in Python: Eine Alternative zu Javas Class.forName()
In Java wird die Methode Class.forName() aktiviert das dynamische Laden einer Klasse zur Laufzeit. Python bietet mit seiner inhärenten Flexibilität einen einfacheren Ansatz zur Bewältigung dieser Aufgabe.
Dynamisches Laden von Klassen in Python
Im Gegensatz zu Java bietet Python native Unterstützung für Selbstbeobachtung und Dynamik Laden der Klasse. Die integrierte Funktion import kann verwendet werden, um ein Modul dynamisch zu importieren, gefolgt von der Verwendung der Funktion getattr(), um auf die spezifische Klasse innerhalb dieses Moduls zuzugreifen.
Beispielfunktion
Hier ist eine Beispielfunktion, die die Funktionalität von Javas Class.forName() nachahmt:
<code class="python">def get_class(kls): parts = kls.split('.') module = ".".join(parts[:-1]) m = __import__(module) for comp in parts[1:]: m = getattr(m, comp) return m</code>
Verwendung
Zum Laden und Instanziieren Um eine Klasse dynamisch zu erstellen, können Sie die folgende Schrittfolge verwenden:
Zum Beispiel zeigt der folgende Code die Verwendung:
<code class="python">D = get_class("datetime.datetime") assert D == datetime.datetime a = D(2010, 4, 22) assert a == datetime.datetime(2010, 4, 22, 0, 0)</code>
Zusätzliche Überlegungen
Im Gegensatz zu Java, wo die Klasse. Die Methode forName() löst eine ClassNotFoundException aus, wenn die Klasse nicht gefunden werden kann. Python bietet für diesen Fall keine spezielle Ausnahme. Stattdessen gibt die Funktion import None zurück, wenn das Modul nicht importiert werden kann.
Das obige ist der detaillierte Inhalt vonWie erreicht man dynamisches Laden von Klassen in Python: Eine Alternative zu Javas Class.forName()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!