Erforschung von Metaklassen in Python: Entfesselt der Kraft der KlassenerstellungErforschung von Metaklassen in Python: Entfesselt der Kraft der KlassenerstellungBild von Editor

# Einführung

In Python gibt es ein Konzept, das als objektorientierte Programmierung (OOP) bezeichnet wird. Dieses Programmierparadigma dreht sich um Daten und Objekte. Es funktioniert, indem es den verwandten Zustand (Attributen) und das Verhalten (Methoden) innerhalb der Klassen verringert und Objektinstanzen aus diesen Klassen erstellt.

Für viele Datenwissenschaftler ist Python die erste Programmiersprache, die sie lernen, und es wird zur Grundlage für die meisten Datenaufgaben, die sie übernehmen. OOP wird jedoch manchmal übersehen, da sich viele auf das Schreiben von Verfahrenscode konzentrieren, um sofortige Probleme zu lösen. Für Datenwissenschaftler ermöglicht OOP komplexe Arbeiten in überschaubare Komponenten. Durch die Strukturierung von Code in Klassen können Datenwissenschaftler Redundanz reduzieren und die Wartbarkeit verbessern.

# Klassen in Python

Klassen sind in Python einfach zu erstellen. Ein grundlegendes Beispiel ist unten gezeigt.

class Animal:
    def __init__(self, title, sound):
        self.title = title
        self.sound = sound

    def communicate(self):
        return f"{self.title} makes a sound {self.sound}."

Wir verwenden die Klassensyntax, um den Klassennamen („Tier“) zu definieren und das Konzept eines Tieres mit Eigenschaften zu erfassen, die wir als Parameter übergeben können, sowie eine Methode, die es anwenden kann.

Mit der obigen Klasse können wir Instanzen des Objekts erstellen.

canine = Animal("Canine", "Bark")
print(canine.communicate())

Die Ausgabe ist unten angezeigt.

Der Animal Die Klasse akzeptiert die beiden zuvor festgelegten Argumente, und das Objekt kann das verwenden communicate Methode, nachdem wir es instanziiert haben. Das ist die Kraft einer Klasse: Definieren Sie sie einmal und verwenden Sie sie in vielen Situationen wieder.

# Was sind Metaklasse?

Metaklasse geht weiter, indem sie kontrollieren, wie Klassen selbst erstellt werden. Sie können sich Metacklasse als Blaupausen für Klassen vorstellen, so wie Klassen Blaupausen für Objekte sind. Da ein Objekt eine Instanz einer Klasse ist, ist eine Klasse eine Instanz einer Metaklas. Metaklasse regulieren, wie sich Klassen verhalten.

Wenn wir eine Klasse erstellen, führt Python den Klassenkörper aus und übergibt das Ergebnis dann an die Metaklasse. Dies wird standardmäßig durch den integrierten Einbau behandelt sort Klasse. Durch Subklassigen sortWir können unsere eigenen Metaklassen erstellen und Methoden überschreiben, um die Erstellung der Klassen anzupassen.

Warum könnten wir eine Metaklasse wollen? Es gibt mehrere Gründe für die Arbeit von Datenwissenschaftlern, einschließlich:

  • Bereitstellung eines Customary -Frameworks für alle nachfolgenden Klassen, die erstellt werden
  • Sicherstellen, dass alle Klassen die erforderlichen Methoden definieren
  • Vermeiden Sie wiederholtes Kesselplatten -Setup -Code

Mal sehen, wie der Python -Code für einen Metaclass funktioniert, und dann werden wir ihn aufschlüsseln.

# Metaklasse in Python

Wenn Sie eine Metaklas erstellen, sieht es so aus, als würde man eine reguläre Klasse erstellen, aber Sie erben von sortwie unten gezeigt.

class ExampleMetaclass(sort):
    def __new__(mcs, title, bases, namespace):
        def greet(self):
            return f"Hey from {self.__class__.__name__}!"
        namespace('greet') = greet
        return tremendous().__new__(mcs, title, bases, namespace)

Erstellen Sie als nächstes eine Klasse ähnlich dem vorherigen Beispiel, fügen Sie jedoch die Metaclass als zusätzlichen Parameter hinzu.

class Animal(metaclass=ExampleMetaclass):
    def __init__(self, title, sound):
        self.title = title
        self.sound = sound

    def communicate(self):
        return f"{self.title} makes a sound {self.sound}."

Dasselbe instanziieren Animal Objekt wie zuvor, verwenden Sie aber nun die Methode, die von der Metaklasse bereitgestellt wird.

canine = Animal("Canine", "Bark")
print(canine.greet())

Die Ausgabe ähnelt:

Wie Sie sehen können, die Animal Die Klasse fehlt anfangs a greet Methode, aber die Metaklas injiziert sie während der Erstellung in die Klasse. Lassen Sie es uns etwas weiter aufschlüsseln.

Erstens, um eine Metaklas zu erstellen, die wir von der erben sort Klasse von Python’s Constructed-Ins. sort ist die Standardmetaklasse für alle Klassen in Python und ermöglicht es uns zu steuern, wie neue Klassen erstellt werden.

Als nächstes die __new__ Die Methode in einer Metaklas wird aufgerufen, wenn eine neue Klasse erstellt wird. Die Parameter, die es empfängt, sind:

  • mcs: Die Metaklas selbst
  • title: Der Title der Klasse wird definiert (zum Beispiel „Tier“)
  • bases: Ein Tupel von Basisklassen (die Klassen, aus denen die neue Klasse erbt)
  • namespace: Ein Wörterbuch, das alle im Klassenkörper definierten Attribute und Methoden enthält

Mit diesen vier Parametern können wir steuern, wie die Metaclass die Zielklasse konstruiert.

Dann definieren wir das greet Funktion und in den Klassennamenspace einfügen. Auf diese Weise, greet wird Teil der Klasse und jede Klasse mit erstellt mit ExampleMetaclass wird es einschließen.

Zuletzt erstellt die Metaclass die neue Klasse, indem er die Superklasse anruft __new__ Verfahren.

Das ist die Essenz von Metaklasse in Python, und Sie können sie mit allen Methoden oder Regeln erweitern, die Sie zur Standardisierung und Steuerung der Klassenerstellung benötigen.

# Einpacken

Python wird von Datenwissenschaftlern häufig verwendet. Ein wertvolles Thema in Python ist eine objektorientierte Programmierung, insbesondere die Metaklasse. Durch die Verwendung von Metaklassen können wir den Klassenerstellungsprozess kontrollieren und ändern, wodurch die Konsistenz über die Codebasen hinweg aufrechterhalten und die Effizienz der Workflow verbessert wird.

Ich hoffe das hat geholfen!

Cornellius Yudha Wijaya ist ein Information Science Assistant Supervisor und Datenautor. Während er in Vollzeit bei Allianz Indonesien arbeitet, liebt er es, Python- und Datentipps über soziale Medien und das Schreiben von Medien zu teilen. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert