logo

Dunder ali čarobne metode v Pythonu

Metode Python Magic so metode, ki se začnejo in končajo z dvojnimi podčrtaji '__'. Definirani so z vgrajenimi razredi v Pythonu in se običajno uporabljajo za preobremenitev operaterjev.

Imenujejo se tudi Dunderjeve metode, Dunder tukaj pomeni dvojni pod (podčrtaji).

Čarobne metode Python

Vgrajeni razredi definirajo številne čarobne metode, ti() funkcija vam lahko pokaže čarobne metode, ki jih podeduje razred.



primer:

Ta koda prikazuje čarobne metode, ki jih podeduje int razred.

Python3




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

>

>

Izhod

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

Lahko pa poskusite cmd/terminal, da dobite seznam čarobnih funkcij v Pythonu, odprete cmd ali terminal, vnesete python3, da odprete konzolo Python, in vnesete:

>>> reci(int)>>

Izhod:

Magične metode v Pythonu

Čarobne metode Python

Spodaj so seznami čarobnih metod Python in njihove uporabe.

Inicializacija in konstrukcija

  • __novo__ : Za klic v primeru predmeta.
  • __vroče__ : Da vas pokliče metoda __new__.
  • __od__ : To je destruktor.

Numerične magične metode

odpreti datoteko z javo
  • __prtljažnik__ (sebe): Izvaja vedenje za math.trunc()
  • __ceil__ (sebe): Izvaja vedenje za math.ceil()
  • __nadstropje__ (sebe): Izvaja vedenje za math.floor()
  • __krog__ (sebe, n): Izvaja vedenje za vgrajeni round()
  • __invert__(self): Izvaja vedenje za inverzijo z uporabo ~ operatorja.
  • __abs__(sebe): Izvaja vedenje za vgrajen abs()
  • __neg__(sebe): Izvaja vedenje za zanikanje
  • __pos__(sebe): Izvaja vedenje za unarno pozitivno

Aritmetični operatorji

  • __dodaj__ (sebe, drugo): Izvaja vedenje za math.trunc()
  • __pod__(jaz, drugo): Izvaja vedenje za math.ceil()
  • __Imam__ (sebe, drugo): Izvaja vedenje za math.floor()
  • __floordiv__ (sebe, drugo): Izvaja vedenje za vgrajeni round()
  • __div__(sebe, drugo): Izvaja vedenje za inverzijo z uporabo ~ operatorja.
  • __truediv__(jaz, drugo): Izvaja vedenje za vgrajen abs()
  • __mod__(sebe, drugo): Izvaja vedenje za zanikanje
  • __divmod__(jaz, drugo): Izvaja vedenje za unarno pozitivno
  • __pow__: Izvaja vedenje za eksponente z uporabo operatorja **.
  • __lshift__(sebe, drugo): Izvaja bitni premik v levo z uporabo operatorja <<.
  • __rshift__(sebe, drugo): Izvaja bitni premik v desno z uporabo operatorja>>.
  • __in__(jaz, drugo): Implementira se bitno in z uporabo operatorja &.
  • __ali__(jaz, drugo): Implementira pobitno ali z uporabo | operater.
  • __xor__(sebe, drugo): Implementira bitni xor z uporabo operatorja ^.

Magične metode strun

  • __str__ (sebe): Definira vedenje, ko se str() kliče na primerku vašega razreda.
  • __repr_ _(sebe): T o poklican z vgrajeno metodo int repr(), da vrne strojno berljivo predstavitev tipa.
  • __unicode__(sebe): Ta metoda vrne niz unicode vrste.
  • __format__(self, formatstr): vrne nov slog niza.
  • __hash_ _(sebe): Vrniti mora celo število, njegov rezultat pa se uporablja za hitro primerjavo ključev v slovarjih.
  • __različen od nič__(sam): Definira vedenje, ko se bool() kliče na primerku vašega razreda.
  • __ti_ _(sebe): Ta metoda vrne seznam atributov razreda.
  • __sizeof__( jaz): Vrne velikost predmeta.

Primerjalne magične metode

  • __eq__ (sebe, drugo): Definira vedenje za operator enakosti, ==.
  • __ne__(jaz, drugo): Definira vedenje za operator neenakosti, !=.
  • __lt__ (sebe, drugo): Določa vedenje za operator manj kot <.
  • __gt__ (sebe, drugo): Določa vedenje za operator večje kot>.
  • __le__(jaz, drugo): Določa vedenje za operator manj kot ali enako, <=.
  • __ge__ (sebe, drugo): Določa vedenje za operator večje od ali enako,>=.

Dunder ali čarobne metode v Pythonu

Oglejmo si nekaj čarobnih metod Python s primeri:

1. Metoda __init__

The metoda __init__ ker se inicializacija prikliče brez klica, ko je ustvarjen primerek razreda, kot so konstruktorji v nekaterih drugih programskih jezikih, kot so C++, Java, C#, PHP itd.

Te metode so razlog, da lahko dodamo dva niza z operatorjem '+' brez eksplicitnega prevajanja tipov.

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

>

celo število v niz java
>

Izhod

>

2. __repr__ metoda

__repr__ metoda v Pythonu definira, kako je predmet predstavljen kot niz.

Spodnji delček kode natisne samo pomnilniški naslov objekta niza. Dodajmo metodo __repr__ za predstavitev našega predmeta.

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

>

>

Izhod

Object: Hello>

Če ji poskušamo dodati niz:

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

>

>

Izhod:

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

3. Metoda __dodaj__

__dodaj__ metodo v Pythonu definira, kako bodo predmeti razreda seštevani. Znan je tudi kot preobremenjeni operater seštevanja.

Zdaj dodajte metodo __add__ razredu String:

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

java ustvari naključno število
>

>

Izhod

Hello Geeks>

Razpravljali smo o nekaterih čarobnih metodah Python ali metodah Dunder. Čarobne metode v Pythonu je mogoče uporabiti za različne funkcionalnosti v vašem razredu.

Upam, da boste iz tega članka izvedeli več o čarobnih metodah Python in jih uporabili v svojih projektih.