Python Magic-Methode - Methoden, Komponenten & Vorteile (Beispiele)

Inhaltsverzeichnis:

Anonim

Einführung in die Python Magic-Methode

In Python Magic sind Methoden keine Zauberei. Es ist nur die Natur dieser Methoden, die sie magisch macht. Eine Methode ist nichts anderes als die Funktion in der Python-Klasse. Die eingebauten Methoden, die nicht direkt aufgerufen werden können, sind "magische Methoden". Magische Methoden können nicht direkt aufgerufen werden, das heißt, sie werden indirekt als ein Effekt eines anderen Aufrufs aufgerufen. Es ist einfach, magische Methoden zu identifizieren, da sie vorne und hinten doppelt unterstrichen sind. Zum Beispiel _add_.Diese doppelten Unterstriche haben einen bestimmten Namen, der Geldgeber ist. Also wird _add_ als 'dunder add dunder' bezeichnet.

Was ist die Python Magic-Methode?

  • Python ist eine interpretierte, objektorientierte Programmierung, mit der Sie prozeduralen Code und / oder objektorientiert schreiben können. Wie wir wissen, vereinfacht das Erstellen von Objekten die Handhabung komplizierter Datenstrukturen. Darüber hinaus erleichtern magische Methoden die Erstellung objektorientierter Programmierung.
  • Bevor wir uns mit einer magischen Methode befassen, wollen wir verstehen, warum sie überhaupt geschaffen wurden.
  • Unten sehen Sie ein Beispiel für eine Klasse, die eine magische Methode verwendet, und das andere ohne die magische Methode. In der ersten Methode wird die Methode __init__ magic verwendet, mit der mehrere Instanzvariablen auf einmal initialisiert werden können. Eine Klasse Sport ist so definiert, dass zwei Instanzvariablen berücksichtigt werden, nämlich Name und Sport.
  • Beide Instanzvariablen können auf einmal mit der magischen Methode __inti__ definiert werden. In Fall 2 wird dasselbe wiederholt, aber diesmal verwenden wir eine set-Methode, um die Instanzvariable zu initialisieren. Hier müssen wir für 2 Variablen diese Methode zweimal aufrufen.

Hier können wir die Magie der Magie-Methode sehen, auf einmal können wir mehr als eine variable Instanz definieren.

class Sports():
def __init__(self, name, sport):
self.name = name
self.sport= sport
def get_name(self):
return self.name
def get_sport(self):
return self.sport
first = Sports('john', 'Game of Thrones')
print(first.get_name())
print(first.get_sport())

Ausgabe:

class Sports():
def set_name(self, name):
self.name = name
def set_sport(self, sport):
self.sport= sport
def get_name(self):
return self.name
def get_sport(self):
return self.sport
second = Sports()
second.set_name('Messi')
second.set_sport('Soccer')
print(second.get_name())
print(second.get_sport())

Ausgabe:

Grundsätzlich sind magische Methoden etwas, das die objektorientierte Programmierung erleichtern kann.

Jetzt wollen wir verstehen, was das sind?

  • Magische Methoden sind alles für objektorientiertes Python.
  • Python-Magiemethoden können als spezielle Methoden definiert werden, die einer Klasse "Magie" hinzufügen können.
  • Diese Zauberwörter beginnen und enden mit doppelten Unterstrichen, zum Beispiel _init_ oder _add_.

Python Magic-Methoden

Python hat viele eingebaute magische Methoden, um nur einige zu nennen:

  • __drin__
  • __Neu__
  • __del__
  • __Abs__
  • __hinzufügen__
  • ____
  • __mul__

Wir werden einige der magischen Methoden diskutieren, um es besser zu verstehen.

Nehmen wir nun die magische Methode __add__:

A=5
A+3

Ausgabe: 8

Dasselbe kann mit der magischen Methode __add__ durchgeführt werden.

A.__add__(5)

Ausgabe: 10

Hier wird der Operator plus zum Hinzufügen eines numerischen Werts zur numerischen Variablen A verwendet. Dasselbe kann mit der integrierten Methode __add__ magic durchgeführt werden. Wie wir bereits besprochen haben, sollten magische Methoden jedoch nicht direkt, sondern intern über andere Methoden oder Aktionen aufgerufen werden.

Komponenten

Um genau zu sein, können wir magische Methoden in verschiedene Kategorien einteilen, anstatt Komponenten zu beschreiben.

1. Objektkonstruktor und Initialisierer

  • Magic-Methoden werden häufig in Grundlagen der Python-Programmierung bei der Klassenerstellung und -initialisierung verwendet.
  • Wie wir __init__ Zaubermethode besprochen haben. Mit dieser Methode wird die Initialisierung eines Objekts in der Klasse definiert.
  • __init__ ist nicht die erste Methode, die zur Objekterstellung aufgerufen wird. Es wird jedoch die erste magische Methode __new__ aufgerufen, die eine neue Instanz erstellt und dann die magische Methode __init__ aufruft.

Schauen wir uns das gleiche Beispiel an:

class AbstractClass(object):
def __new__(cls, a, b):
print("calling magic method__new__")
instance = super(AbstractClass, cls).__new__(cls)
instance.__init__(a, b)
def __init__(self, a, b):
print('calling magic method__init__')
print ("Initializing Instance", a, b)
a=AbstractClass(2, 3)

Ausgabe:

Aufruf von magic method__new__

Aufruf von magic method__init__

Instanz 2 initialisieren 3

__new__ kann auf vielfältige Weise verwendet werden, dies zeigt jedoch ein einfaches Beispiel für diese magische Methode.

2. Vergleich Magic-Methoden

Python bietet eine Reihe magischer Methoden, mit denen mithilfe von Operatoren intuitive Vergleiche zwischen Objekten durchgeführt werden können.

Einige sind unten aufgeführt:

  • __lt __ (self, other): Wird verwendet, um beim Vergleich mit dem Operator <aufgerufen zu werden.
  • __le __ (self, other): Wird verwendet, um beim Vergleich mit dem Operator <= aufgerufen zu werden.
  • __eq __ (self, other): Wird verwendet, um beim Vergleich mit dem Operator == aufgerufen zu werden.
  • __ne __ (self, other): wird verwendet, um beim Vergleich mit dem Operator! = aufgerufen zu werden.
  • __ge __ (self, other): Wird verwendet, um beim Vergleich mit dem Operator> = aufgerufen zu werden.

3. Infix-Operatoren

In Python sind typische Binäroperatoren als magische Methoden integriert.

Einige sind unten aufgeführt:

  • __add__ (self, other): zur Ergänzung
  • __ (Selbst, Anderes): zur Subtraktion
  • __mul __ (Selbst, Anderes): zur Multiplikation

Vorteile der Python Magic-Methode

Python bietet "magische Methoden", weil sie wirklich Magie für Ihr Programm ausführen.

Die größten Vorteile sind:

Die magischen Methoden von Python bieten eine einfache Möglichkeit, Objekte wie integrierte Typen zu verhalten. Sie können also kontraintuitive oder nicht standardmäßige Methoden zur Ausführung grundlegender Operatoren vermeiden. Zum Beispiel

wir haben zwei Wörterbücher 'dicta' und 'dicta'

dicta = (1 : "XYZ")
dictb = (2 : "LMN")
dict1 + dict2

Ausgabe:

Rückverfolgung (letzter Anruf zuletzt):

Datei "Python", Zeile 1, in

TypeError: Nicht unterstützte Operandentypen für +: 'dict' und 'dict'

Dies führt nun zu einem Typfehler, da der Dictionary-Typ das Hinzufügen nicht unterstützt. Jetzt können wir die Dictionary-Klasse erweitern und die magische Methode "__add__" hinzufügen:

class AddDict(dict):
def __add__(self, dicts):
self.update(dicts)
return AddDict(self)
dicta = AddDict((1 : "XYZ"))
dictb = AddDict((2 : "LMN"))
print (dicta + dictb)

Jetzt erhalten wir die gewünschte Ausgabe.
(1: 'XYZ', 2: 'LMN')

So passierte plötzlich Magie, indem nur eine magische Methode hinzugefügt wurde. Der Fehler verschwand, den wir früher bekommen hatten.

Fazit

Magische Methoden sind spezielle Methoden, die indirekt aufgerufen werden und mit Dundern oder doppelten Unterstrichen wie __add__ gekennzeichnet sind. Um die Python-Klassen besser nutzen zu können, muss man zumindest einige magische Methoden wie __init__, __new__ kennen. Vergleichsoperator-Magiemethoden geben Python eine Kante, an der Instanzen von Objekten sowohl auf Gleichheit als auch auf Ungleichheit verglichen werden können. Auf den Punkt gebracht: Machen Sie Magie mit der Python-Programmierung, indem Sie die Komplexität reduzieren.

Empfohlene Artikel

Dies ist eine Anleitung zur Python Magic-Methode. Hier diskutieren wir die Einführung in die Python Magic-Methode, ihre Komponenten und Vorteile sowie einige Beispiele. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren.

  1. Palindrome in PHP
  2. Python-Schlüsselwörter
  3. Python IDE für Windows
  4. While-Schleife in Python
  5. C ++ - Schlüsselwörter