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:

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.