logo

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

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.