logo

Dunder czyli metody magiczne w Pythonie

Metody magii Pythona to metody rozpoczynające się i kończące podwójnym podkreśleniem „__”. Są one definiowane przez klasy wbudowane w Pythonie i powszechnie używane do przeciążania operatorów.

Nazywa się je również metody Dundera, Dunder oznacza tutaj Double Under (podkreślenia).



Magiczne metody Pythona

Wbudowane klasy definiują wiele magicznych metod, Ty() Funkcja może pokazać magiczne metody dziedziczone przez klasę.

Przykład:

Ten kod wyświetla magiczne metody dziedziczone przez wew klasa.



Python3






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

>

>

Wyjście

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

Możesz też spróbować cmd/terminal, aby uzyskać listę magicznych funkcji w Pythonie, otworzyć cmd lub terminal, wpisać python3, aby przejść do konsoli Pythona i wpisać:

>>> powiedz(int)>

Wyjście:

Metody magiczne w Pythonie

Magiczne metody Pythona

Poniżej znajduje się lista magicznych metod Pythona i ich zastosowań.

Inicjalizacja i konstrukcja

  • __nowy__ : Aby zostać wywołanym podczas tworzenia instancji obiektu.
  • __gorący__ : Aby zostać wywołanym metodą __new__.
  • __z__ : To jest destruktor.

Numeryczne metody magiczne

różnica tygrysa i lwa
  • __pień__ (samego siebie): Implementuje zachowanie funkcji math.trunc()
  • __stropować__ (samego siebie): Implementuje zachowanie funkcji math.ceil()
  • __podłoga__ (samego siebie): Implementuje zachowanie math.floor()
  • __okrągły__ (samo, n): Implementuje zachowanie wbudowanej funkcji round()
  • __odwróć__(samo): Implementuje zachowanie inwersji za pomocą operatora ~.
  • __abs__(siebie): Implementuje zachowanie wbudowanej funkcji abs()
  • __neg__(siebie): Implementuje zachowanie dla negacji
  • __pos__(siebie): Implementuje zachowanie dla jednoargumentowego dodatniego

Operatory arytmetyczne

  • __dodać__ (ja, inny): Implementuje zachowanie funkcji math.trunc()
  • __sub__(siebie, inny): Implementuje zachowanie funkcji math.ceil()
  • __Ja mam__ (ja, inny): Implementuje zachowanie math.floor()
  • __floordiv__ (ja, inny): Implementuje zachowanie wbudowanej funkcji round()
  • __div__(siebie, inny): Implementuje zachowanie inwersji za pomocą operatora ~.
  • __truediv__(siebie, inny): Implementuje zachowanie wbudowanej funkcji abs()
  • __mod__(siebie, inny): Implementuje zachowanie dla negacji
  • __divmod__(samodzielny, inny): Implementuje zachowanie dla jednoargumentowego dodatniego
  • __pow__: Implementuje zachowanie wykładników za pomocą operatora **.
  • __lshift__(samodzielny, inny): Implementuje przesunięcie bitowe w lewo za pomocą operatora <<.
  • __rshift__(samodzielny, inny): Implementuje przesunięcie bitowe w prawo za pomocą operatora>>.
  • __i__(siebie, inni): Implementuje bitowo i używa operatora &.
  • __lub__(siebie, inny): Implementuje bitowo lub używając | operator.
  • __xor__(siebie, inny): Implementuje bitowy xor za pomocą operatora ^.

Metody magii sznurków

  • __str__ (samego siebie): Definiuje zachowanie, gdy str() jest wywoływana w instancji twojej klasy.
  • __repr_ _(siebie): T o zostanie wywołany przez wbudowaną metodę repr() w celu zwrócenia czytelnej maszynowo reprezentacji typu.
  • __unicode__(samodzielnie): Ta metoda zwracania ciągu Unicode typu.
  • __format__(samodzielny, formatstr): zwróć nowy styl ciągu.
  • __haszysz_ _(samego siebie): Musi zwrócić liczbę całkowitą, a jej wynik służy do szybkiego porównywania kluczy w słownikach.
  • __niezero__(siebie): Definiuje zachowanie, gdy funkcja bool() jest wywoływana w instancji klasy.
  • __Ty_ _(samego siebie): Ta metoda zwracająca listę atrybutów klasy.
  • __rozmiar__( samego siebie): Zwraca rozmiar obiektu.

Porównanie metod magicznych

  • __równik__ (ja, inny): Definiuje zachowanie operatora równości, ==.
  • __ne__(siebie, inny): Definiuje zachowanie operatora nierówności, !=.
  • __lt__ (ja, inny): Definiuje zachowanie operatora „mniej niż”, <.
  • __gt__ (ja, inny): Definiuje zachowanie operatora większości,>.
  • __le__(siebie, inny): Definiuje zachowanie operatora mniejszego lub równego, <=.
  • __ge__ (ja, inny): Definiuje zachowanie operatora „większego lub równego”>=.

Metody Dundera lub magiczne w Pythonie

Zobaczmy niektóre magiczne metody Pythona z przykładami:

1. Metoda __init__

The metoda __init__ for inicjalizacja jest wywoływana bez żadnego wywołania, gdy tworzona jest instancja klasy, podobnie jak konstruktory w niektórych innych językach programowania, takich jak C++, Java, C#, PHP itp.

Dzięki tym metodom możemy dodać dwa ciągi znaków za pomocą operatora „+” bez żadnego jawnego rzutowania na typ.

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

>

lista w Javie
>

Wyjście

>

2. Metoda __repr__

__repr__ Metoda w Pythonie definiuje sposób prezentowania obiektu jako ciągu znaków.

Poniższy fragment kodu wypisuje tylko adres pamięci obiektu string. Dodajmy metodę __repr__, która będzie reprezentować nasz obiekt.

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

>

>

Wyjście

Object: Hello>

Jeśli spróbujemy dodać do niego ciąg znaków:

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

>

>

Wyjście:

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

3. Metoda __add__

metoda __add__ w Pythonie definiuje sposób dodawania obiektów klasy. Jest również znany jako przeciążony operator dodawania.

Teraz dodaj metodę __add__ do klasy String:

Pyton




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

ścieżka ustawiona w Javie
>

>

Wyjście

Hello Geeks>

Omówiliśmy niektóre magiczne metody Pythona lub metody Dundera. Magicznych metod w Pythonie można używać do różnych funkcjonalności w Twojej klasie.

Mam nadzieję, że z tego artykułu dowiesz się o magicznych metodach Pythona i wykorzystasz je w swoich projektach.