Heim > Backend-Entwicklung > Python-Tutorial > Wie rufe ich Unterklassen einer Klasse nach Namen in Python ab?

Wie rufe ich Unterklassen einer Klasse nach Namen in Python ab?

Linda Hamilton
Freigeben: 2024-11-18 09:10:02
Original
683 Leute haben es durchsucht

How to Retrieve Subclasses of a Class by Name in Python?

Unterklassen einer Klasse nach Namen in Python finden

Problem:
Wie können Sie alle Klassen abrufen? die von einer bestimmten Basisklasse in Python erben und deren Klasse verwenden Name?

Lösung:

Python bietet einen eleganten Ansatz, um Unterklassen einer bestimmten Klasse anhand ihres Namens zu finden. Mit der Methode __subclasses__ können Sie die Unterklassen einer Klasse direkt abrufen.

Code-Erklärung:

Angenommen, Sie haben eine Basisklasse namens Foo mit den Unterklassen Bar, Baz, und Bing veranschaulicht der folgende Codeausschnitt die Verwendung von __subclasses__:

class Foo(object):
    pass

class Bar(Foo):
    pass

class Baz(Foo):
    pass

class Bing(Bar):
    pass

# Get the subclasses of Foo
foo_subclasses = Foo.__subclasses__()
print("Subclass names:", [cls.__name__ for cls in foo_subclasses])
print("Subclasses themselves:", Foo.__subclasses__())

# Validate that the subclasses inherit from Foo
for cls in Foo.__subclasses__():
    print("Base class of {}: {}".format(cls, cls.__base__))
Nach dem Login kopieren

Ausgabe:

Subclass names: ['Bar', 'Baz']
Subclasses themselves: [<class '__main__.Bar'>, <class '__main__.Baz'>]
Base class of <class '__main__.Bar'>: <class '__main__.Foo'>
Base class of <class '__main__.Baz'>: <class '__main__.Foo'>
Nach dem Login kopieren

Unterunterklassen finden:
Wenn Sie Unterunterklassen finden müssen, können Sie eine Rekursive verwenden Funktion:

def all_subclasses(cls):
    return set(cls.__subclasses__()).union(
        [s for c in cls.__subclasses__() for s in all_subclasses(c)])
Nach dem Login kopieren

Hinweis:
Es ist wichtig zu beachten, dass die Klassendefinitionen der Unterklassen zuvor ausgeführt worden sein müssen, damit __subclasses__ effektiv funktioniert. Wenn Sie über eine Zeichenfolge verfügen, die den Klassennamen darstellt, können Sie die Klasse zunächst mithilfe von Techniken wie globals(), locals() oder importlib.

abrufen

Das obige ist der detaillierte Inhalt vonWie rufe ich Unterklassen einer Klasse nach Namen in Python ab?. 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