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ö:
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.
