Python magijos metodai yra metodai, kurie prasideda ir baigiasi dvigubais pabraukimais „__“. Jas apibrėžia įtaisytosios Python klasės ir dažniausiai naudojamos operatoriaus perkrovimui.
Jie taip pat vadinami Dunder metodai, „Dunder“ čia reiškia „Double Under“ (pabraukimai).
Python magijos metodai
Įtaisytos klasės apibrėžia daugybę magiškų metodų, tu() funkcija gali parodyti magiškus metodus, kuriuos paveldėjo klasė.
Pavyzdys:
Šis kodas rodo stebuklingus metodus, kuriuos paveldėjo tarpt klasė.
Python3
# code> print>(>dir>(>int>))> |
>
>Išvestis
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>
Arba galite pabandyti cmd/terminal, kad gautumėte stebuklingų Python funkcijų sąrašą, atidarykite cmd arba terminalą, įveskite python3, kad patektumėte į Python konsolę, ir įveskite:
>>> pasakyti(int)>>Išvestis:
Python magijos metodai
Žemiau pateikiami Python magijos metodų ir jų naudojimo būdų sąrašai.
Inicializavimas ir statyba
- __naujas__ : Kad būtų iškviestas objekto egzistavimo metu.
- __karšta__ : Norėdami gauti iškvietimą __new__ metodu.
- __iš__ : Tai yra naikintojas.
Skaitmeninės magijos metodai
kas yra automatiškai prijungta java
- __bagažinė__ (savarankiškai): Įgyvendina elgseną math.trunc()
- __luba__ (savarankiškai): Įgyvendina math.ceil() elgseną
- __aukštas__ (savarankiškai): Įgyvendina elgseną math.floor()
- __apvalus__ (savaime, n): Įgyvendina integruoto raundo () elgesį
- __invert__(savaime): Įgyvendina inversijos elgesį naudojant ~ operatorių.
- __abs__(savaime): Įgyvendina įtaisytųjų abs() elgesį
- __negaus__(savaime): Įgyvendina neigimo elgesį
- __pos__(savaime): Įgyvendina elgesį vienareikšmiškai teigiamai
Aritmetiniai operatoriai
- __papildyti__ (savęs, kitas): Įgyvendina elgseną math.trunc()
- __sub__(savęs, kitas): Įgyvendina math.ceil() elgseną
- __Aš turiu__ (savęs, kitas): Įgyvendina elgseną math.floor()
- __floordiv__ (savęs, kitas): Įgyvendina integruoto raundo () elgesį
- __div__(savęs, kitas): Įgyvendina inversijos elgesį naudojant ~ operatorių.
- __truediv__(savęs, kitas): Įgyvendina įtaisytųjų abs() elgesį
- __mod__(savarankiškas, kitas): Įgyvendina neigimo elgesį
- __divmod__(savęs, kitas): Įgyvendina elgesį vienareikšmiškai teigiamai
- __pow__: Įgyvendina eksponentų elgesį naudojant ** operatorių.
- __lshift__(savęs, kitas): Įgyvendina poslinkį į kairę, naudojant operatorių <<.
- __rshift__(savęs, kitas): Įgyvendina dešinįjį bitų poslinkį naudojant operatorių>>.
- __ir__(savęs, kitas): Įgyvendina bitais ir naudojant & operatorių.
- __arba__(savęs, kitas): Įgyvendinama bitais arba naudojant | operatorius.
- __xor__(savęs, kitas): Įgyvendina bitų xor naudojant ^ operatorių.
Styginių magijos metodai
- __str__ (savarankiškai): Apibrėžia elgesį, kai str() iškviečiamas jūsų klasės egzemplioriuje.
- __repr_ _(pats): T o gauti iškvietimą naudojant integruotą repr() metodą, kad būtų grąžintas mašininiu būdu nuskaitomas tipo vaizdas.
- __unicode__(savaime): Šis metodas grąžina tipo unikodo eilutę.
- __format__(self, formatstr): grąžinti naują stygos stilių.
- __hash_ _(savarankiškai): Jis turi grąžinti sveikąjį skaičių, o jo rezultatas naudojamas greitam raktų palyginimui žodynuose.
- __nonzero__(savaime): Apibrėžia elgesį, kai bool() iškviečiamas jūsų klasės egzemplioriuje.
- __tu_ _(savarankiškai): Šis metodas grąžina klasės atributų sąrašą.
- __dydis__( savarankiškai): Tai grąžina objekto dydį.
Magijos metodų palyginimas
- __eq__ (savęs, kitas): Apibrėžia lygybės operatoriaus == elgesį.
- __ne__(savęs, kitas): Apibrėžia nelygybės operatoriaus elgesį !=.
- __lt__ (savęs, kitas): Apibrėžia mažiau nei operatorių, < elgesį.
- __gt__ (savęs, kitas): Apibrėžia didesnio nei operatoriaus> elgseną.
- __le__(savęs, kitas): Apibrėžia operatoriaus „mažiau nei arba lygu“ elgseną <=.
- __ge__ (savęs, kitas): Apibrėžia operatoriaus „didesnis nei arba lygus“ elgesį>=.
Dunder arba Magic metodai Python
Pažvelkime į kai kuriuos Python magijos metodus su pavyzdžiais:
1. __init__ metodas
The __init__ metodas inicijavimui iškviečiamas be jokio iškvietimo, kai sukuriamas klasės egzempliorius, kaip ir tam tikrų kitų programavimo kalbų, tokių kaip C++, Java, C#, PHP ir kt., konstruktoriai.
Dėl šių metodų galime pridėti dvi eilutes su operatoriumi „+“ be jokio aiškaus tipo perdavimo.
Python3
logotipas java
# 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)> |
>Išvestis
>
2. __repr__ metodas
__repr__ Python metodas apibrėžia, kaip objektas pateikiamas kaip eilutė.
Žemiau pateiktas kodo fragmentas spausdina tik eilutės objekto atminties adresą. Pridėkime metodą __repr__, kad pavaizduotų mūsų objektą.
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)> |
>
>Išvestis
Object: Hello>
Jei bandysime prie jo pridėti eilutę:
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'>)> |
>
>
Išvestis:
TypeError : unsupported operand type(s) for +: 'String' and 'str'>
3. __pridėti__ metodas
__pridėti__ metodas Python apibrėžia, kaip bus sudedami klasės objektai. Jis taip pat žinomas kaip perkrautas papildymo operatorius.
Dabar pridėkite __add__ metodą prie eilutės klasės:
Python
kelias nustatytas java
# 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'>)> |
>
>Išvestis
Hello Geeks>
Mes aptarėme kai kuriuos Python magijos metodus arba Dunder metodus. Magiškieji Python metodai gali būti naudojami įvairioms jūsų klasės funkcijoms.
Tikimės, kad iš šio straipsnio sužinosite apie Python magijos metodus ir naudosite juos savo projektuose.
