Was ist eine Metaklasse in Python?

little bottle
Freigeben: 2020-09-17 10:21:31
Original
4168 Leute haben es durchsucht

Metaklasse in Python bezieht sich auf das Objekt, das zum Erstellen einer Klasse verwendet wird. Die Funktion type() in Python ist eigentlich eine Metaklasse. Die Funktion type() wird zum Erstellen von Metaklassen aller Klassen verwendet. Wenn Sie eine benutzerdefinierte Metaklasse erstellen möchten, müssen Sie auch vom Typ erben.

Was ist eine Metaklasse in Python?

In Python sind Klassen auch Objekte. Wenn wir das Schlüsselwort class verwenden, um eine Klasse zu erstellen, scannt der Python-Interpreter dann nur die Syntax der Klassendefinition Rufen Sie die Funktion type() auf, um die Klasse zu erstellen. Wissen Sie also, was eine Klasse ausmacht? Tatsächlich ist er eine Metaklasse.

Was ist eine Metaklasse?

Metaklassen sind eigentlich Objekte, die zum Erstellen von Klassen verwendet werden.

Um es besser zu verstehen, können wir es uns so vorstellen: Wir erstellen Klassen, um Instanzen von Klassen zu erstellen, und auf ähnliche Weise erstellen wir Metaklassen, um Klassen zu erstellen.

Eine Metaklasse ist eine Klasse (Instanz) , etwa so:

Metaclass() = class
class() = object # object==>实例
Nach dem Login kopieren

Um zu verstehen, was eine Metaklasse ist, werfen wir einen Blick auf die Funktion type().

Tatsächlich ist Typ eine Metaklasse, und Typ ist die Metaklasse, die wir zum Erstellen aller Klassen verwenden. (Wenn wir unsere eigene definierte Metaklasse erstellen möchten, müssen wir auch vom Typ erben)

Wie Metaklassen funktionieren:

Lassen Sie uns im Folgenden einen Blick darauf werfen Beispiel

class ReedSunMetaclass(type):
    pass
class Foo(object, metaclass = ReedSunMetaclass): 
    pass
class Bar(Foo):
    pass
Nach dem Login kopieren

Zuerst erstellen wir eine Metaklasse ReedSunMetaclass

(Hinweis! Gemäß der Standardkonvention endet der Klassenname der Metaklasse immer mit Metaclass, sodass dies eindeutig ist zeigt an, dass es sich um eine Metaklasse handelt).

Dann erstellen wir eine Foo-Klasse mit der Metaklasse ReedSunMetaclass.

(Gleichzeitig wird das Attribut __metaclass__ der Klasse Foo zu ReedSunMetaclass).

Schließlich erstellen wir eine Unterklasse Bar, die von Foo erbt.

Versuchen wir zu verstehen, wie diese Schritte in Python ausgeführt werden:

Für die übergeordnete Klasse Foo sucht Python nach _ in der Klassendefinition, wenn Wird es gefunden, verwendet Python es, um die Klasse Foo zu erstellen. Wenn es nicht gefunden wird, verwendet es den integrierten Typ, um diese Klasse zu erstellen. Offenbar wurde es gefunden.

Für die Unterklasse Bar sucht Python zunächst nach dem Attribut __metaclass__ in der Unterklasse. Wenn es nicht gefunden wird, wird es erneut in der übergeordneten Klasse suchen Typ. Anscheinend ist es in der übergeordneten Klasse zu finden.

Wir können einen Vorteil der Verwendung von Metaklassen erkennen, nämlich dass Unterklassen implizit etwas erben können.

Das obige ist der detaillierte Inhalt vonWas ist eine Metaklasse in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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