Dunder eller magiske metoder i Python

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:

Magiske metoder i Python

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.



Topp Artikler

Kategori

Interessante Artikler