logo

Dunder- oder Magic-Methoden in Python

Python Magic-Methoden sind die Methoden, die mit doppelten Unterstrichen „__“ beginnen und enden. Sie werden durch in Python integrierte Klassen definiert und häufig zum Überladen von Operatoren verwendet.

Sie werden auch genannt Dunder-Methoden, Dunder bedeutet hier Double Under (Unterstriche).



Python Magic-Methoden

Eingebaute Klassen definieren viele magische Methoden, Du() Die Funktion kann Ihnen magische Methoden zeigen, die von einer Klasse geerbt wurden.

Beispiel:

Dieser Code zeigt die von geerbten magischen Methoden an int Klasse.



Python3






# code> print>(>dir>(>int>))>

>

>

Ausgabe

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>

Oder Sie können cmd/terminal ausprobieren, um die Liste der magischen Funktionen in Python abzurufen, öffnen Sie cmd oder Terminal, geben Sie python3 ein, um zur Python-Konsole zu gelangen, und geben Sie Folgendes ein:

>>> say(int)>

Ausgabe:

Magische Methoden in Python

Python Magic-Methoden

Nachfolgend finden Sie eine Liste der magischen Python-Methoden und deren Verwendung.

Initialisierung und Konstruktion

  • __neu__ : Um bei der Instanziierung eines Objekts aufgerufen zu werden.
  • __heiß__ : Um von der Methode __new__ aufgerufen zu werden.
  • __des__ : Es ist der Destruktor.

Numerische magische Methoden

ändern Spalte Oracle hinzufügen
  • __Stamm__ (selbst): Implementiert Verhalten für math.trunc()
  • __ceil__ (selbst): Implementiert Verhalten für math.ceil()
  • __Boden__ (selbst): Implementiert Verhalten für math.floor()
  • __runden__ (selbst,n): Implementiert Verhalten für die integrierte Round()
  • __invert__(self): Implementiert das Verhalten für die Invertierung mithilfe des ~-Operators.
  • __abs__(self): Implementiert Verhalten für das integrierte abs()
  • __neg__(selbst): Implementiert Verhalten für die Negation
  • __pos__(selbst): Implementiert Verhalten für unäres Positiv

Rechenzeichen

  • __hinzufügen__ (Selbst, Andere): Implementiert Verhalten für math.trunc()
  • __sub__(selbst, andere): Implementiert Verhalten für math.ceil()
  • __Ich habe__ (Selbst, Andere): Implementiert Verhalten für math.floor()
  • __floordiv__ (Selbst, Andere): Implementiert Verhalten für die integrierte Round()
  • __div__(selbst, andere): Implementiert das Verhalten für die Invertierung mithilfe des ~-Operators.
  • __truediv__(selbst, andere): Implementiert Verhalten für das integrierte abs()
  • __mod__(selbst, andere): Implementiert Verhalten für die Negation
  • __divmod__(self, other): Implementiert Verhalten für unäres Positiv
  • __pow__: Implementiert Verhalten für Exponenten mithilfe des **-Operators.
  • __lshift__(self, other): Implementiert eine bitweise Verschiebung nach links mithilfe des <<-Operators.
  • __rshift__(self, other): Implementiert eine bitweise Verschiebung nach rechts mithilfe des>>-Operators.
  • __und__(selbst, andere): Implementiert bitweise und unter Verwendung des &-Operators.
  • __oder__(selbst, andere): Implementiert bitweise oder mit | Operator.
  • __xor__(selbst, andere): Implementiert bitweises XOR mithilfe des ^-Operators.

String Magic-Methoden

  • __str__ (selbst): Definiert das Verhalten, wenn str() für eine Instanz Ihrer Klasse aufgerufen wird.
  • __repr_ _(selbst): T o wird von der integrierten Methode repr() aufgerufen, um eine maschinenlesbare Darstellung eines Typs zurückzugeben.
  • __unicode__(self): Diese Methode gibt einen Unicode-String eines Typs zurück.
  • __format__(self, formatstr): Gibt einen neuen String-Stil zurück.
  • __hash_ _(selbst): Es muss eine Ganzzahl zurückgeben und sein Ergebnis wird für den schnellen Schlüsselvergleich in Wörterbüchern verwendet.
  • __nonzero__(self): Definiert das Verhalten, wenn bool() für eine Instanz Ihrer Klasse aufgerufen wird.
  • __Du_ _(selbst): Diese Methode gibt eine Liste von Attributen einer Klasse zurück.
  • __Größe von__( selbst): Es gibt die Größe des Objekts zurück.

Vergleich magischer Methoden

  • __eq__ (Selbst, Andere): Definiert das Verhalten für den Gleichheitsoperator ==.
  • __ne__(selbst, andere): Definiert das Verhalten für den Ungleichheitsoperator !=.
  • __lt__ (Selbst, Andere): Definiert das Verhalten für den Kleiner-als-Operator <.
  • __gt__ (Selbst, Andere): Definiert das Verhalten für den Größer-als-Operator>.
  • __le__(selbst, andere): Definiert das Verhalten für den Kleiner-oder-gleich-Operator <=.
  • __ge__ (Selbst, Andere): Definiert das Verhalten für den Größer-als-oder-gleich-Operator>=.

Dunder- oder Magic-Methoden in Python

Sehen wir uns einige der magischen Methoden von Python anhand von Beispielen an:

1. __init__-Methode

Der __init__-Methode zur Initialisierung wird ohne Aufruf aufgerufen, wenn eine Instanz einer Klasse erstellt wird, wie Konstruktoren in bestimmten anderen Programmiersprachen wie C++, Java, C#, PHP usw.

Diese Methoden sind der Grund, warum wir zwei Strings mit dem „+“-Operator ohne explizite Typumwandlung hinzufügen können.

Python3




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)>

Text mit CSS unterstreichen

>

>

Ausgabe

>

2. __repr__-Methode

__repr__ Die Methode in Python definiert, wie ein Objekt als Zeichenfolge dargestellt wird.

Der folgende Codeausschnitt gibt nur die Speicheradresse des String-Objekts aus. Fügen wir eine __repr__-Methode hinzu, um unser Objekt darzustellen.

Python3




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)>

>

>

Ausgabe

Object: Hello>

Wenn wir versuchen, eine Zeichenfolge hinzuzufügen:

Python3




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)>

>

>

Ausgabe:

  TypeError  : unsupported operand type(s) for +: 'String' and 'str'>

3. __add__-Methode

__add__-Methode in Python definiert, wie die Objekte einer Klasse addiert werden. Er wird auch als überladener Additionsoperator bezeichnet.

Fügen Sie nun die Methode __add__ zur String-Klasse hinzu:

Python




Zufallszahl in Java generieren

# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > >def> __add__(>self>, other):> >return> self>.string>+> other> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)>

>

>

Ausgabe

Hello Geeks>

Wir haben einige der magischen Methoden von Python oder Dunder-Methoden besprochen. Magische Methoden in Python können für verschiedene Funktionalitäten in Ihrer Klasse verwendet werden.

Ich hoffe, Sie lernen in diesem Artikel die magischen Methoden von Python kennen und können sie in Ihren Projekten verwenden.