Bietet Python ein Äquivalent zur Class.forName()-Methode von Java?
Die Reflexionsfähigkeiten von Python sind im Vergleich zu denen von Java umfangreicher und flexibler. Dieser Artikel befasst sich mit der Frage, ob Python ein Äquivalent zu Javas Class.forName() hat, und bietet eine Pythonic-Lösung für die dynamische Instanziierung von Klassen aus String-Argumenten.
Nachdenken über die Class.forName()-Methode von Java, die dauert Wenn man einen vollständig qualifizierten Klassennamen als Eingabe verwendet und das entsprechende Klassenobjekt zurückgibt, kann man sich eine ähnliche Funktionalität in Python vorstellen. Allerdings gibt es in Python kein direktes Äquivalent.
Die unten dargestellte Funktion get_class() emuliert das Verhalten von Class.forName() und ermöglicht die Erstellung von Klassenobjekten aus Zeichenfolgendarstellungen:
<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>
Diese Funktion kann so verwendet werden, als wäre sie die Klasse selbst.
Bedenken Sie beispielsweise Folgendes:
<code class="python">D = get_class("datetime.datetime") D # Output: <type 'datetime.datetime'> D.now() # Output: datetime.datetime(2009, 1, 17, 2, 15, 58, 883000) a = D(2010, 4, 22) a # Output: datetime.datetime(2010, 4, 22, 0, 0)</code>
Darüber hinaus hebt der Artikel die Unterschiede in der Reflexion von Python im Vergleich zu Java hervor und fördert die Erforschung pythonischer Ansätze, um eine ähnliche Funktionalität zu erreichen.
Das obige ist der detaillierte Inhalt vonSo instanziieren Sie Klassen dynamisch in Python: Gibt es ein Class.forName()-Äquivalent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!