logo

Dunder of magische methoden in Python

Python Magic-methoden zijn de methoden die beginnen en eindigen met dubbele onderstrepingstekens ‘__’. Ze worden gedefinieerd door ingebouwde klassen in Python en worden vaak gebruikt voor overbelasting door operators.

Ze worden ook wel genoemd Dunder-methoden, Dunder betekent hier Double Under (Onderstrepingstekens).



Python magische methoden

Ingebouwde klassen definiëren veel magische methoden, Jij() functie kan je magische methoden laten zien die door een klasse zijn geërfd.

Voorbeeld:

Deze code geeft de magische methoden weer die zijn geërfd door int klas.



Python3






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

>

>

Uitvoer

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

Of je kunt cmd/terminal proberen om de lijst met magische functies in Python te krijgen, cmd of terminal openen, python3 typen om naar de Python-console te gaan en typen:

>>> zeg(int)>

Uitgang:

Magische methoden in Python

Python magische methoden

Hieronder staan ​​de lijsten met magische Python-methoden en hun toepassingen.

Initialisatie en constructie

  • __nieuw__ : Om opgeroepen te worden in de instantiatie van een object.
  • __heet__ : Om gebeld te worden via de __new__-methode.
  • __van de__ : Het is de vernietiger.

Numerieke magische methoden

toetsenbord invoegen
  • __kofferbak__ (zelf): Implementeert gedrag voor math.trunc()
  • __plafond__ (zelf): Implementeert gedrag voor math.ceil()
  • __vloer__ (zelf): Implementeert gedrag voor math.floor()
  • __ronde__ (zelf,n): Implementeert gedrag voor de ingebouwde round()
  • __omkeren__(zelf): Implementeert gedrag voor inversie met behulp van de operator ~.
  • __abs__(zelf): Implementeert gedrag voor de ingebouwde abs()
  • __neg__(zelf): Implementeert gedrag voor ontkenning
  • __pos__(zelf): Implementeert gedrag voor unair positief

Rekenkundige operatoren

  • __toevoegen__ (zelf, anders): Implementeert gedrag voor math.trunc()
  • __sub__(zelf, anders): Implementeert gedrag voor math.ceil()
  • __Ik heb__ (zelf, anders): Implementeert gedrag voor math.floor()
  • __vloerdiv__ (zelf, anders): Implementeert gedrag voor de ingebouwde round()
  • __div__(zelf, anders): Implementeert gedrag voor inversie met behulp van de operator ~.
  • __truediv__(zelf, anders): Implementeert gedrag voor de ingebouwde abs()
  • __mod__(zelf, anders): Implementeert gedrag voor ontkenning
  • __divmod__(zelf, anders): Implementeert gedrag voor unair positief
  • __pow__: Implementeert gedrag voor exponenten met behulp van de operator **.
  • __lshift__(zelf, anders): Implementeert bitsgewijze verschuiving naar links met behulp van de <<-operator.
  • __rshift__(zelf, anders): Implementeert bitsgewijze verschuiving naar rechts met behulp van de operator>>.
  • __en__(zelf, anders): Implementeert bitgewijs en gebruikt de operator &.
  • __of__(zelf, anders): Implementeert bitgewijs of gebruikt de | exploitant.
  • __xor__(zelf, anders): Implementeert bitsgewijze xor met behulp van de operator ^.

String Magic-methoden

  • __str__ (zelf): Definieert het gedrag wanneer str() wordt aangeroepen op een instantie van uw klasse.
  • __repr_ _(zelf): T o aangeroepen worden door de ingebouwde repr()-methode om een ​​door een machine leesbare representatie van een type terug te geven.
  • __unicode__(zelf): Deze methode retourneert een Unicode-tekenreeks van een type.
  • __format__(zelf, formatstr): retourneer een nieuwe tekenreeksstijl.
  • __hash_ _(zelf): Het moet een geheel getal retourneren en het resultaat ervan wordt gebruikt voor snelle sleutelvergelijking in woordenboeken.
  • __niet nul__(zelf): Definieert het gedrag wanneer bool() wordt aangeroepen op een instantie van uw klasse.
  • __Jij_ _(zelf): Deze methode om een ​​lijst met attributen van een klasse terug te geven.
  • __De grootte van__( zelf): Het retourneert de grootte van het object.

Vergelijking magische methoden

  • __eq__ (zelf, anders): Definieert het gedrag voor de gelijkheidsoperator, ==.
  • __ne__(zelf, anders): Definieert het gedrag voor de ongelijkheidsoperator, !=.
  • __lt__ (zelf, anders): Definieert het gedrag voor de kleiner-dan-operator, <.
  • __gt__ (zelf, anders): Definieert het gedrag voor de groter-dan-operator,>.
  • __le__(zelf, anders): Definieert het gedrag voor de operator kleiner dan of gelijk aan, <=.
  • __ge__ (zelf, anders): Definieert het gedrag voor de operator groter dan of gelijk aan,>=.

Dunder of Magic-methoden in Python

Laten we enkele van de magische Python-methoden bekijken met voorbeelden:

1. __init__-methode

De __init__ methode voor initialisatie wordt zonder enige aanroep aangeroepen wanneer een instantie van een klasse wordt gemaakt, zoals constructors in bepaalde andere programmeertalen zoals C++, Java, C#, PHP, enz.

Deze methoden zijn de reden dat we twee tekenreeksen kunnen toevoegen met de ‘+’ operator zonder enige expliciete typecasting.

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)>

>

rij versus kolom
>

Uitvoer

>

2. __repr__-methode

__repr__ methode in Python definieert hoe een object als een string wordt gepresenteerd.

Het onderstaande codefragment drukt alleen het geheugenadres van het stringobject af. Laten we een __repr__-methode toevoegen om ons object weer te geven.

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)>

>

>

Uitvoer

Object: Hello>

Als we proberen er een string aan toe te voegen:

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'>)>

>

lente gereedschapssuite
>

Uitgang:

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

3. __add__-methode

__add__ methode in Python definieert hoe de objecten van een klasse bij elkaar worden opgeteld. Het is ook bekend als overbelaste opteloperator.

Voeg nu de __add__-methode toe aan de String-klasse:

Python




# 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'>)>

>

>

Uitvoer

Hello Geeks>

We hebben enkele van de magische Python-methoden of Dunder-methoden besproken. Magische methoden in Python kunnen worden gebruikt voor verschillende functionaliteiten in uw klas.

Ik hoop dat je uit dit artikel meer leert over de magische Python-methoden en deze in je projecten gebruikt.