logo

Dunder eller magiska metoder i Python

Python Magic metoder är metoderna som börjar och slutar med dubbla understreck '__'. De definieras av inbyggda klasser i Python och används ofta för operatörsöverbelastning.

De kallas också Dunder metoder, Dunder betyder här Double Under (Understreck).



Python magiska metoder

Inbyggda klasser definierar många magiska metoder, du() funktion kan visa dig magiska metoder som ärvts av en klass.

Exempel:

Den här koden visar de magiska metoderna som ärvts av int klass.



Python3






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

>

>

Produktion

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

Eller så kan du prova cmd/terminal för att få listan över magiska funktioner i Python, öppna cmd eller terminal, skriv python3 för att gå till Python-konsolen och skriv:

>>> say(int)>

Produktion:

Magiska metoder i Python

Python magiska metoder

Nedan är listorna över Python-magiska metoder och deras användningsområden.

Initiering och konstruktion

  • __ny__ : Att bli anropad i ett objekts instansiering.
  • __varm__ : Att bli anropad av metoden __new__.
  • __av__ : Det är förstöraren.

Numeriska magiska metoder

kontrollstrukturer python
  • __trunk__ (själv): Implementerar beteende för math.trunc()
  • __tak__ (själv): Implementerar beteende för math.ceil()
  • __golv__ (själv): Implementerar beteende för math.floor()
  • __runda__ (själv,n): Implementerar beteende för den inbyggda rundan()
  • __invertera__(själv): Implementerar beteende för inversion med ~-operatorn.
  • __abs__(själv): Implementerar beteende för den inbyggda abs()
  • __neg__(själv): Implementerar beteende för negation
  • __pos__(själv): Implementerar beteende för unärt positivt

Aritmetiska operatorer

  • __Lägg till__ (själv, annan): Implementerar beteende för math.trunc()
  • __sub__(själv, annat): Implementerar beteende för math.ceil()
  • __Jag har__ (själv, annan): Implementerar beteende för math.floor()
  • __floordiv__ (själv, annan): Implementerar beteende för den inbyggda rundan()
  • __div__(själv, annat): Implementerar beteende för inversion med ~-operatorn.
  • __truediv__(själv, annat): Implementerar beteende för den inbyggda abs()
  • __mod__(själv, annat): Implementerar beteende för negation
  • __divmod__(själv, annat): Implementerar beteende för unärt positivt
  • __pow__: Implementerar beteende för exponenter med **-operatorn.
  • __lshift__(själv, annat): Implementerar bitvis vänsterförskjutning med <<-operatorn.
  • __rshift__(själv, annat): Implementerar bitvis högerförskjutning med>>-operatorn.
  • __och__(själv, andra): Implementerar bitvis och använder &-operatorn.
  • __eller__(själv, annat): Implementerar bitvis eller med hjälp av | operatör.
  • __xor__(själv, annat): Implementerar bitvis xor med ^-operatorn.

Strängmagismetoder

  • __str__ (själv): Definierar beteende för när str() anropas på en instans av din klass.
  • __repr_ _(själv): T o bli anropad av den inbyggda metoden repr() för att returnera en maskinläsbar representation av en typ.
  • __unicode__(själv): Denna metod för att returnera en unicode-sträng av en typ.
  • __format__(själv, formatstr): returnera en ny stil av sträng.
  • __hash_ _(själv): Det måste returnera ett heltal, och dess resultat används för snabb nyckeljämförelse i ordböcker.
  • __icke-noll__(själv): Definierar beteende för när bool() anropas på en instans av din klass.
  • __du_ _(själv): Denna metod för att returnera en lista med attribut för en klass.
  • __storlek av__( själv): Det returnerar storleken på objektet.

Jämförelse av magiska metoder

  • __eq__ (själv, annan): Definierar beteende för jämlikhetsoperatören, ==.
  • __ne__(själv, annat): Definierar beteende för ojämlikhetsoperatorn, !=.
  • __lt__ (själv, annan): Definierar beteende för mindre än-operatören, <.
  • __gt__ (själv, annan): Definierar beteende för operatören större än,>.
  • __le__(själv, annan): Definierar beteende för operatorn mindre-än-eller-lika-till, <=.
  • __ge__ (själv, annan): Definierar beteende för operatorn större-än-eller-lika-till,>=.

Dunder eller magiska metoder i Python

Låt oss se några av Python-magiska metoder med exempel:

1. __init__ metod

De __init__ metod för initialisering anropas utan något anrop, när en instans av en klass skapas, som konstruktörer i vissa andra programmeringsspråk som C++, Java, C#, PHP, etc.

Dessa metoder är anledningen till att vi kan lägga till två strängar med operatorn '+' utan någon explicit typcasting.

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

>

>

Produktion

>

2. __repr__ metod

__repr__ metod i Python definierar hur ett objekt presenteras som en sträng.

Kodavsnittet nedan skriver endast ut minnesadressen för strängobjektet. Låt oss lägga till en __repr__-metod för att representera vårt objekt.

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

>

markdown med bilder

>

Produktion

Object: Hello>

Om vi ​​försöker lägga till en sträng till den:

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

>

>

Produktion:

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

3. __add__ metod

__add__ metod i Python definierar hur objekten i en klass ska läggas ihop. Det är också känt som överbelastad additionsoperatör.

Lägg nu till metoden __add__ till String-klassen:

Pytonorm

full form




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

>

>

Produktion

Hello Geeks>

Vi har diskuterat några av Python-magiska metoder eller Dunder-metoder. Magiska metoder i Python kan användas för olika funktioner i din klass.

Hoppas du lär dig om Python-magiska metoder från den här artikeln och använder den i dina projekt.