Heim > Java > javaLernprogramm > Hauptteil

So instanziieren Sie Klassen dynamisch in Python: Gibt es ein Class.forName()-Äquivalent?

Mary-Kate Olsen
Freigeben: 2024-11-03 11:32:03
Original
273 Leute haben es durchsucht

How to Dynamically Instantiate Classes in Python: Is There a Class.forName() Equivalent?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage