Python Magic-metoder er metodene som starter og slutter med doble understrekinger '__'. De er definert av innebygde klasser i Python og brukes ofte for operatøroverbelastning.
De kalles også Dunder-metoder, Dunder betyr her Double Under (Understrek).
Python magiske metoder
Innebygde klasser definerer mange magiske metoder, du() funksjonen kan vise deg magiske metoder som er arvet av en klasse.
Eksempel:
Denne koden viser de magiske metodene som er arvet av int klasse.
Python3
# code> print>(>dir>(>int>))> |
>
>Produksjon
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>
Eller du kan prøve cmd/terminal for å få listen over magiske funksjoner i Python, åpne cmd eller terminal, skriv python3 for å gå til Python-konsollen, og skriv:
>>> si(int)>
Produksjon:

Python magiske metoder
Nedenfor er listene over Python-magiske metoder og deres bruk.
Initialisering og konstruksjon
- __ny__ : For å bli kalt i et objekts instansiering.
- __varmt__ : For å bli oppringt av __new__-metoden.
- __av__ : Det er ødeleggeren.
Numeriske magiske metoder
returnerer arrays i java
- __stamme__ (selv): Implementerer atferd for math.trunc()
- __tak__ (selv): Implementerer atferd for math.ceil()
- __gulv__ (selv): Implementerer atferd for math.floor()
- __rund__ (selv,n): Implementerer atferd for den innebygde runden()
- __invert__(selv): Implementerer atferd for inversjon ved å bruke ~-operatoren.
- __abs__(selv): Implementerer atferd for den innebygde abs()
- __neg__(selv): Implementerer atferd for negasjon
- __pos__(selv): Implementerer atferd for unært positiv
Aritmetiske operatorer
- __Legg til__ (selv, andre): Implementerer atferd for math.trunc()
- __sub__(selv, annet): Implementerer atferd for math.ceil()
- __Jeg har__ (selv, andre): Implementerer atferd for math.floor()
- __floordiv__ (selv, andre): Implementerer atferd for den innebygde runden()
- __div__(selv, annet): Implementerer atferd for inversjon ved å bruke ~-operatoren.
- __truediv__(selv, annet): Implementerer atferd for den innebygde abs()
- __mod__(selv, annet): Implementerer atferd for negasjon
- __divmod__(selv, annet): Implementerer atferd for unært positiv
- __pow__: Implementerer atferd for eksponenter ved å bruke **-operatoren.
- __lshift__(selv, annet): Implementerer bitvis venstreforskyvning ved å bruke <<-operatoren.
- __rshift__(selv, annet): Implementerer høyre bitvis skift ved hjelp av>>-operatoren.
- __og__(selv, andre): Implementerer bitvis og bruker &-operatoren.
- __eller__(selv, andre): Implementerer bitvis eller ved å bruke | operatør.
- __xor__(selv, annet): Implementerer bitvis xor ved å bruke ^-operatoren.
String magiske metoder
- __str__ (selv): Definerer atferd for når str() kalles på en forekomst av klassen din.
- __repr_ _(selv): T o bli kalt opp av den innebygde repr()-metoden for å returnere en maskinlesbar representasjon av en type.
- __unicode__(selv): Denne metoden for å returnere en unicode-streng av en type.
- __format__(selv, formatstr): returnere en ny strengstil.
- __hash_ _(selv): Den må returnere et heltall, og resultatet brukes til rask sammenligning av nøkkel i ordbøker.
- __ikke-null__(selv): Definerer atferd for når bool() kalles på en forekomst av klassen din.
- __du_ _(selv): Denne metoden for å returnere en liste over attributter til en klasse.
- __størrelsen av__( selv): Det returnerer størrelsen på objektet.
Sammenligning av magiske metoder
- __eq__ (selv, andre): Definerer atferd for likhetsoperatøren, ==.
- __ne__(selv, andre): Definerer atferd for ulikhetsoperatøren, !=.
- __lt__ (selv, andre): Definerer atferd for mindre enn-operatøren, <.
- __gt__ (selv, andre): Definerer atferd for større enn-operatøren,>.
- __le__(selv, andre): Definerer virkemåten for mindre-enn-eller-lik-til-operatøren, <=.
- __ge__ (selv, andre): Definerer atferd for større-enn-eller-lik-til-operatoren,>=.
Dunder eller magiske metoder i Python
La oss se noen av Python-magiske metoder med eksempler:
1. __init__ metode
De __init__ metode for initialisering påkalles uten noe kall, når en forekomst av en klasse opprettes, som konstruktører i visse andre programmeringsspråk som C++, Java, C#, PHP, etc.
Disse metodene er grunnen til at vi kan legge til to strenger med '+'-operatoren uten noen eksplisitt 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)> |
>
>Produksjon
>
2. __repr__ metode
__repr__ metoden i Python definerer hvordan et objekt presenteres som en streng.
Kodebiten nedenfor skriver bare ut minneadressen til strengobjektet. La oss legge til en __repr__-metode for å representere objektet vårt.
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)> |
>
>Produksjon
amisha patel
Object: Hello>
Hvis vi prøver å legge til en streng til 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'>)> |
normalisering i databasen
>
>
Produksjon:
TypeError : unsupported operand type(s) for +: 'String' and 'str'>
3. __add__ metode
__add__ metode i Python definerer hvordan objektene til en klasse skal legges sammen. Det er også kjent som overbelastet tilleggsoperatør.
Legg nå til __add__-metoden til String-klassen:
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'>)> |
>
>Produksjon
Hello Geeks>
Vi har diskutert noen av Python-magimetodene eller Dunder-metodene. Magiske metoder i Python kan brukes til forskjellige funksjoner i klassen din.
Håper du lærer om Python-magiske metoder fra denne artikkelen, og bruker den i prosjektene dine.