logo

Dunder sau metode magice în Python

Metode Python Magic sunt metodele care încep și se termină cu caractere de subliniere duble „__”. Ele sunt definite de clase încorporate în Python și utilizate în mod obișnuit pentru supraîncărcarea operatorului.

Se mai numesc si ei metode Dunder, Dunder aici înseamnă Double Under (subliniere).



Metode magice Python

Clasele încorporate definesc multe metode magice, tu() funcția vă poate arăta metode magice moștenite de o clasă.

Exemplu:

Acest cod afișează metodele magice moștenite de int clasă.



Python3






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

>

>

Ieșire

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

Sau, puteți încerca cmd/terminal pentru a obține lista de funcții magice în Python, deschideți cmd sau terminalul, tastați python3 pentru a accesa consola Python și tastați:

>>> spune(int)>>> 

Ieșire:

Metode magice în Python

Metode magice Python

Mai jos sunt listele metodelor magice Python și utilizările acestora.

Inițializare și Construcție

  • __nou__ : Pentru a fi apelat în instanțierea unui obiect.
  • __Fierbinte__ : Pentru a fi apelat prin metoda __new__.
  • __din __ : Este destructorul.

Metode magice numerice

conversia șirului în json în java
  • __trompă__ (de sine): Implementează comportamentul pentru math.trunc()
  • __ceil__ (de sine): Implementează comportamentul pentru math.ceil()
  • __podea__ (de sine): Implementează comportamentul pentru math.floor()
  • __rundă__ (self,n): Implementează comportamentul pentru runda încorporată()
  • __invert__(auto): Implementează comportamentul pentru inversare folosind operatorul ~.
  • __abs__(sine): Implementează comportamentul pentru abs () încorporat
  • __neg__(self): Implementează comportamentul pentru negație
  • __pos__(self): Implementează comportamentul pentru pozitiv unar

Operatori aritmetici

  • __adăuga__ (sine, altul): Implementează comportamentul pentru math.trunc()
  • __sub__(sine, altul): Implementează comportamentul pentru math.ceil()
  • __Eu am__ (sine, altul): Implementează comportamentul pentru math.floor()
  • __floordiv__ (sine, altul): Implementează comportamentul pentru runda încorporată()
  • __div__(self, other): Implementează comportamentul pentru inversare folosind operatorul ~.
  • __truediv__(self, other): Implementează comportamentul pentru abs () încorporat
  • __mod__(self, other): Implementează comportamentul pentru negație
  • __divmod__(self, other): Implementează comportamentul pentru pozitiv unar
  • __pow__: Implementează comportamentul exponenților folosind operatorul **.
  • __lshift__(self, other): Implementează deplasarea la stânga pe biți folosind operatorul <<.
  • __rshift__(self, other): Implementează deplasarea pe biți la dreapta folosind operatorul>>.
  • __și__(sine, alții): Se implementează pe biți și folosind operatorul &.
  • __sau__(sine, altul): Se implementează pe biți sau folosind | operator.
  • __xor__(sine, altul): Implementează xor pe biți folosind operatorul ^.

Metode magice cu corzi

  • __str__ (de sine): Definește comportamentul atunci când str() este apelat pe o instanță a clasei dumneavoastră.
  • __repr_ _(auto): T o fi apelat prin metoda încorporată repr() pentru a returna o reprezentare care poate fi citită de mașină a unui tip.
  • __unicode__(self): Această metodă de a returna un șir Unicode de tip.
  • __format__(self, formatstr): returnează un nou stil de șir.
  • __hash_ _(de sine): Trebuie să returneze un număr întreg, iar rezultatul său este folosit pentru compararea rapidă a cheilor în dicționare.
  • __nonzero__(auto): Definește comportamentul atunci când bool() este apelat pe o instanță a clasei dumneavoastră.
  • __tu_ _(de sine): Această metodă pentru a returna o listă de atribute ale unei clase.
  • __dimensiunea__( de sine): Returnează dimensiunea obiectului.

Compararea metodelor magice

  • __eq__ (sine, altul): Definește comportamentul pentru operatorul de egalitate, ==.
  • __ne__(sine, altul): Definește comportamentul operatorului de inegalitate, !=.
  • __lt__ (sine, altul): Definește comportamentul operatorului mai puțin decât, <.
  • __gt__ (sine, altul): Definește comportamentul operatorului mai mare decât,>.
  • __le__(self, other): Definește comportamentul operatorului mai mic decât sau egal cu, <=.
  • __GE__ (sine, altul): Definește comportamentul pentru operatorul mai mare decât sau egal cu,>=.

Metode Dunder sau Magic în Python

Să vedem câteva dintre metodele magice Python cu exemple:

1. metoda __init__

The metoda __init__ pentru că inițializarea este invocată fără nici un apel, atunci când este creată o instanță a unei clase, ca constructori în anumite alte limbaje de programare precum C++, Java, C#, PHP etc.

Aceste metode sunt motivul pentru care putem adăuga două șiruri de caractere cu operatorul „+” fără nicio tipare explicită.

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

>

Ieșire

>

2. metoda __repr__

__repr__ metoda din Python definește modul în care un obiect este prezentat ca șir.

Fragmentul de cod de mai jos tipărește numai adresa de memorie a obiectului șir. Să adăugăm o metodă __repr__ pentru a reprezenta obiectul nostru.

Python3

np.log




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

>

>

Ieșire

Object: Hello>

Dacă încercăm să îi adăugăm un șir:

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

>

>

Ieșire:

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

3. metoda __add__

__add__ metoda în Python definește cum vor fi adăugate obiectele unei clase. Este cunoscut și ca operator de adăugare supraîncărcat.

Acum adăugați metoda __add__ la clasa String:

Piton




xor în 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'>)>

>

>

Ieșire

Hello Geeks>

Am discutat câteva dintre metodele magice Python sau metodele Dunder. Metodele magice din Python pot fi folosite pentru diferite funcționalități din clasa ta.

Sper că veți afla despre metodele magice Python din acest articol și să le utilizați în proiectele dvs.