Dunder eller magiske metoder i Python
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
- __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
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'> )> |
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.