logo

Dunder tai maagiset menetelmät Pythonissa

Python Magic -menetelmät ovat menetelmiä, jotka alkavat ja päättyvät kaksoisalaviivalla '__'. Pythonin sisäänrakennetut luokat määrittävät ne, ja niitä käytetään yleisesti operaattorin ylikuormitukseen.

Niitä kutsutaan myös Dunder menetelmät, Dunder tarkoittaa tässä Double Under (alaviivat).



Python Magic -menetelmät

Sisäänrakennetut luokat määrittelevät monia taikamenetelmiä, sinä() -funktio voi näyttää sinulle luokan perimiä taikamenetelmiä.

Esimerkki:

Tämä koodi näyttää taikamenetelmät, jotka ovat perineet int luokkaa.



Python 3






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

>

>

Lähtö

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

Tai voit kokeilla cmd/terminalia saadaksesi luettelon Pythonin taikafunktioista, avata cmd:n tai terminaalin, kirjoittamalla python3 siirtyäksesi Python-konsoliin ja kirjoittamalla:

>>> sano(int)>> 

Lähtö:

Taikamenetelmät Pythonissa

Python Magic -menetelmät

Alla on luettelo Python-taikamenetelmistä ja niiden käytöstä.

Alustus ja rakentaminen

  • __Uusi__ : Saadaksesi kutsun objektin ilmentymässä.
  • __kuuma__ : Saat kutsun __new__-menetelmällä.
  • __ of the__ : Se on tuhoaja.

Numeeriset maagiset menetelmät

js-funktion kutsuminen html:stä
  • __runko__ (itse): Toteuttaa käyttäytymisen math.trunc()
  • __katto__ (itse): Toteuttaa käyttäytymisen math.ceil()
  • __lattia__ (itse): Toteuttaa käyttäytymisen math.floor()
  • __pyöristää__ (itse, n): Toteuttaa käyttäytymisen sisäänrakennetulle kierrokselle()
  • __käännä__(itse): Toteuttaa käyttäytymisen inversiolle ~-operaattorilla.
  • __abs__(itse): Toteuttaa käyttäytymisen sisäänrakennetulle abs()
  • __neg__(itse): Toteuttaa negatiivista käyttäytymistä
  • __pos__(itse): Toteuttaa käyttäytymistä yksipuolisen positiivisen suhteen

Aritmeettiset operaattorit

  • __lisätä__ (itse, muu): Toteuttaa käyttäytymisen math.trunc()
  • __sub__(itse, muu): Toteuttaa käyttäytymisen math.ceil()
  • __Minulla on__ (itse, muu): Toteuttaa käyttäytymisen math.floor()
  • __floordiv__ (itse, muu): Toteuttaa käyttäytymisen sisäänrakennetulle kierrokselle()
  • __div__(itse, muu): Toteuttaa käyttäytymisen inversiolle ~-operaattorilla.
  • __truediv__(itse, muu): Toteuttaa käyttäytymisen sisäänrakennetulle abs()
  • __mod__(itse, muu): Toteuttaa negatiivista käyttäytymistä
  • __divmod__(itse, muu): Toteuttaa käyttäytymistä yksipuolisen positiivisen suhteen
  • __pow__: Toteuttaa eksponentien käyttäytymisen käyttämällä **-operaattoria.
  • __lshift__(itse, muu): Toteuttaa vasemman bittisuuntaisen siirron <<-operaattorilla.
  • __rshift__(itse, muu): Toteuttaa bittisuuntaisen siirron oikealle käyttämällä>>-operaattoria.
  • __and__(itse, muu): Toteuttaa bittikohtaisesti ja käyttämällä &-operaattoria.
  • __tai__(itse, muu): Toteuttaa bittikohtaisesti tai | operaattori.
  • __xor__(itse, muu): Toteuttaa bittikohtaisen xor-operaattorin ^-operaattorilla.

String Magic Methods

  • __str__ (itse): Määrittää käyttäytymisen, kun str():tä kutsutaan luokkasi esiintymässä.
  • __repr_ _(itse): T o saada kutsu sisäänrakennetulla repr()-menetelmällä palauttamaan koneellisesti luettava tyyppi.
  • __unicode__(itse): Tämä menetelmä palauttaa tyypin unicode-merkkijonon.
  • __format__(self, formatstr): palauttaa uuden tyylin merkkijono.
  • __hash_ _(itse): Sen on palautettava kokonaisluku, ja sen tulosta käytetään nopeaan avainten vertailuun sanakirjoissa.
  • __nonzero__(itse): Määrittää käyttäytymisen, kun bool()-funktiota kutsutaan luokkasi esiintymässä.
  • __sinä_ _(itse): Tämä menetelmä palauttaa luettelon luokan attribuuteista.
  • __koko__( itse): Se palauttaa kohteen koon.

Taikamenetelmien vertailu

  • __eq__ (itse, muu): Määrittää käyttäytymisen yhtäläisyysoperaattorille ==.
  • __ne__(itse, muu): Määrittää käyttäytymisen epäyhtälöoperaattorille !=.
  • __lt__ (itse, muu): Määrittää käyttäytymisen pienempi kuin -operaattorille, <.
  • __gt__ (itse, muu): Määrittää käyttäytymisen suurempi kuin -operaattorille>.
  • __le__(itse, muu): Määrittää vähemmän kuin-tai-yhtä-operaattorin, <=, käyttäytymisen.
  • __ge__ (itse, muu): Määrittää käyttäytymisen suurempi kuin-tai-yhtä-operaattorille,>=.

Dunder- tai Magic-menetelmät Pythonissa

Katsotaanpa joitain Python-taikamenetelmiä esimerkein:

1. __init__ -menetelmä

The __init__ -menetelmä alustusta varten kutsutaan ilman kutsua, kun luokan esiintymä luodaan, kuten konstruktorit tietyissä muissa ohjelmointikielissä, kuten C++, Java, C#, PHP jne.

Nämä menetelmät ovat syy siihen, miksi voimme lisätä kaksi merkkijonoa +-operaattorilla ilman nimenomaista tyyppilähetystä.

Python 3




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

>

Lähtö

>

2. __repr__ -menetelmä

__repr__ Pythonin menetelmä määrittää, kuinka objekti esitetään merkkijonona.

Alla oleva koodinpätkä tulostaa vain merkkijonoobjektin muistiosoitteen. Lisätään __repr__-metodi edustamaan objektiamme.

Python 3




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

tehtaan suunnittelukuvio

>

>

Lähtö

Object: Hello>

Jos yritämme lisätä siihen merkkijonon:

Python 3




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

>

>

Lähtö:

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

3. __lisää__-menetelmä

__lisää__-menetelmää Pythonissa määrittää, kuinka luokan objektit lasketaan yhteen. Se tunnetaan myös ylikuormitettuna lisäysoperaattorina.

minkä kokoinen näyttöni on

Lisää nyt __add__-menetelmä merkkijonoluokkaan:

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

>

>

Lähtö

Hello Geeks>

Olemme keskustelleet joistakin Pythonin taikamenetelmistä tai Dunder-menetelmistä. Pythonin taikamenetelmiä voidaan käyttää luokassasi erilaisiin toimintoihin.

Toivottavasti opit Pythonin taikamenetelmistä tästä artikkelista ja käytät sitä projekteissasi.