logo

Dunder або магічні методи в Python

Методи Python Magic це методи, які починаються і закінчуються подвійним підкресленням «__». Вони визначаються вбудованими класами в Python і зазвичай використовуються для перевантаження операторів.

Їх ще називають Методи Дандера, Дундер тут означає подвійне підкреслення (підкреслення).



Магічні методи Python

Вбудовані класи визначають багато магічних методів, ви() функція може показати вам магічні методи, успадковані класом.

приклад:

Цей код відображає магічні методи, успадковані внутр клас.



Python3






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

>

>

Вихід

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

Або ви можете спробувати cmd/terminal, щоб отримати список чарівних функцій у Python, відкрийте cmd або термінал, введіть python3, щоб перейти до консолі Python, і введіть:

>>> say(int)>>

Вихід:

Магічні методи в Python

Магічні методи Python

Нижче наведено списки магічних методів Python та їх використання.

Ініціалізація та конструкція

  • __новий__ : Для виклику в екземплярі об’єкта.
  • __гарячий__ : Для виклику методом __new__.
  • __з__ : Це деструктор.

Числові магічні методи

bash перевіряє, чи встановлено змінну середовища
  • __стовбур__ (само): Реалізує поведінку для math.trunc()
  • __ceil__ (само): Реалізує поведінку для math.ceil()
  • __підлога__ (само): Реалізує поведінку для math.floor()
  • __круг__ (я, n): Реалізує поведінку для вбудованого round()
  • __invert__(self): Реалізує поведінку для інверсії за допомогою оператора ~.
  • __abs__(сам): Реалізує поведінку для вбудованого abs()
  • __neg__(само): Реалізує поведінку для заперечення
  • __pos__(само): Реалізує поведінку для унарного позитиву

Арифметичні оператори

  • __додати__ (себе, інше): Реалізує поведінку для math.trunc()
  • __sub__(самий, інший): Реалізує поведінку для math.ceil()
  • __У мене є__ (себе, інше): Реалізує поведінку для math.floor()
  • __floordiv__ (себе, інше): Реалізує поведінку для вбудованого round()
  • __div__(самий, інший): Реалізує поведінку для інверсії за допомогою оператора ~.
  • __truediv__(самий, інший): Реалізує поведінку для вбудованого abs()
  • __mod__(самий, інший): Реалізує поведінку для заперечення
  • __divmod__(самий, інший): Реалізує поведінку для унарного позитиву
  • __pow__: Реалізує поведінку для експонент за допомогою оператора **.
  • __lshift__(самий, інший): Реалізує побітовий зсув вліво за допомогою оператора <<.
  • __rshift__(самий, інший): Реалізує порозрядний зсув вправо за допомогою оператора>>.
  • __і__(себе, інше): Реалізується побітово та за допомогою оператора &.
  • __або__(себе, інше): Реалізується побітово або за допомогою | оператор.
  • __xor__(самий, інший): Реалізує побітове xor за допомогою оператора ^.

Методи магії струн

  • __str__ (само): Визначає поведінку, коли str() викликається в екземплярі вашого класу.
  • __repr_ _(само): Т o отримати виклик вбудованим методом int repr() для повернення машиночитаного представлення типу.
  • __unicode__(само): Цей метод повертає рядок типу Unicode.
  • __format__(self, formatstr): повернути новий стиль рядка.
  • __хеш_ _(само): Він має повертати ціле число, а його результат використовується для швидкого порівняння ключів у словниках.
  • __ненульовий__(самий): Визначає поведінку, коли bool() викликається в екземплярі вашого класу.
  • __ви_ _(само): Цей метод повертає список атрибутів класу.
  • __sizeof__( себе): Він повертає розмір об'єкта.

Методи магії порівняння

  • __eq__ (себе, інше): Визначає поведінку оператора рівності ==.
  • __ne__(сам, інший): Визначає поведінку оператора нерівності !=.
  • __lt__ (себе, інше): Визначає поведінку для оператора менше <.
  • __gt__ (себе, інше): Визначає поведінку для оператора «більше ніж»>.
  • __le__(себе, інше): Визначає поведінку для оператора менше або рівно, <=.
  • __ge__ (себе, інше): Визначає поведінку для оператора «більше або рівно»>=.

Dunder або магічні методи в Python

Давайте розглянемо деякі з магічних методів Python на прикладах:

1. Метод __init__

The метод __init__ оскільки ініціалізація викликається без жодного виклику, коли створюється екземпляр класу, як конструктори в деяких інших мовах програмування, таких як C++, Java, C#, PHP тощо.

Ці методи є причиною того, що ми можемо додати два рядки за допомогою оператора «+» без будь-якого явного приведення типів.

Python3

масив проти arraylist




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

>

>

Вихід

>

2. __репр__ метод

__repr__ метод у Python визначає, як об’єкт буде представлено у вигляді рядка.

Наведений нижче фрагмент коду друкує лише адресу пам’яті рядкового об’єкта. Давайте додамо метод __repr__ для представлення нашого об’єкта.

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

>

>

Вихід

Object: Hello>

Якщо ми спробуємо додати до нього рядок:

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

>

>

Вихід:

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

3. Метод __додати__

__додати__ метод у Python визначає, як об’єкти класу будуть складатися разом. Він також відомий як перевантажений оператор додавання.

як завантажити гру pigeon на андроїд

Тепер додайте метод __add__ до класу 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'>)>

>

>

Вихід

Hello Geeks>

Ми обговорили деякі магічні методи Python або методи Dunder. Чарівні методи в Python можна використовувати для різних функцій у вашому класі.

Сподіваюся, ви дізнаєтеся про магічні методи Python із цієї статті та використовуєте їх у своїх проектах.