Вступ до магічного методу Пітона

У методах Python Magic - це не деякі речі майстра. Саме природа цих методів робить їх магічними. Метод - це не що інше, як функція в класі Python. Вбудовані методи, які не можна назвати безпосередньо, - це "магічні методи". Магічні методи не можна викликати безпосередньо, тобто вони викликаються опосередковано як ефект іншого дзвінка. Ідентифікувати магічні методи легко, оскільки вони подвійно підкреслили один спереду, а другий ззаду. Наприклад, _add_. Ці подвійні підкреслення мають конкретну назву, яка є фундатором. Отже _add_ називається "dnder add dunder".

Що таке магічний метод Пітона?

  • Python - інтерпретоване, об'єктно-орієнтоване програмування, яке дає вам змогу писати процедурний код та / або об'єктно-орієнтоване. Як відомо, що створення об’єктів спрощує обробку складних структур даних. На додаток до цього магічні методи полегшують можливість створення об'єктно-орієнтованого програмування.
  • Перш ніж зануритися у магічний метод, давайте розберемося, чому в першу чергу вони створені?
  • Нижче наведено один приклад першого класу, який використовує магічний метод, а інший - без магічного методу. У першому використовується магічний метод __init__, який може бути використаний для ініціалізації декількох змінних екземплярів за один раз. Спорт класу визначається як врахування двох змінних примірників, що є ім'ям та видом спорту.
  • Обидва змінні екземпляра можна визначити за один раз за допомогою магічного методу __inti__. У випадку 2 повторюється те саме, але на цей раз ми використовуємо встановлений метод для ініціалізації змінної екземпляра. Тут для 2 змінних нам доведеться викликати цей метод двічі.

Тут ми можемо побачити магію методу магії, за один раз ми можемо визначити більше, ніж одну змінну інстанцію.

class Sports():
def __init__(self, name, sport):
self.name = name
self.sport= sport
def get_name(self):
return self.name
def get_sport(self):
return self.sport
first = Sports('john', 'Game of Thrones')
print(first.get_name())
print(first.get_sport())

Вихід:

class Sports():
def set_name(self, name):
self.name = name
def set_sport(self, sport):
self.sport= sport
def get_name(self):
return self.name
def get_sport(self):
return self.sport
second = Sports()
second.set_name('Messi')
second.set_sport('Soccer')
print(second.get_name())
print(second.get_sport())

Вихід:

Таким чином, магічні методи - це те, що може полегшити об'єктно-орієнтоване програмування.

Тепер розберемося, що це?

  • Магічні методи - це все для об'єктно-орієнтованого Python.
  • Магічні методи Python можна визначити як спеціальні методи, які можуть додати «магію» до класу.
  • Ці магічні слова починаються і закінчуються подвійними підкресленнями, наприклад, _init_ або _add_.

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

У Python є багато вбудованих магічних методів, щоб назвати такі:

  • __в цьому__
  • __new__
  • __del__
  • __abs__
  • __add__
  • __sub__
  • __mul__

Ми обговоримо деякі магічні методи, щоб краще зрозуміти це.

Тепер візьмемо магічний метод __add__:

A=5
A+3

Вихід: 8

Те саме можна виконати і з магічним методом __add__.

A.__add__(5)

Вихід: 10

Тут оператор плюс використовується для додавання числового значення до числової змінної А. Те саме можна виконати за допомогою вбудованого магічного методу __add__. Однак, як ми вже обговорювали, магічні методи повинні називатися не безпосередньо, а внутрішньо через деякі інші методи чи дії.

Компоненти

Для конкретності ми можемо відокремлювати магічні методи в різних категоріях, а не описувати компоненти.

1. Конструктор та ініціалізатор об'єктів

  • Магічні методи широко використовуються в основах програмування пітона при побудові та ініціалізації класів.
  • Як ми вже обговорювали __init__ магічний метод. Цей метод використовується для визначення ініціалізації об'єкта в класі.
  • __init__ - це не перший метод, який викликається для створення об'єкта, проте використовується перший магічний метод __new__, який створює новий екземпляр, а потім викликає магічний метод __init__.

Подивимося на прикладі того ж:

class AbstractClass(object):
def __new__(cls, a, b):
print("calling magic method__new__")
instance = super(AbstractClass, cls).__new__(cls)
instance.__init__(a, b)
def __init__(self, a, b):
print('calling magic method__init__')
print ("Initializing Instance", a, b)
a=AbstractClass(2, 3)

Вихід:

виклик магічного методу__new__

виклик магічного методу__init__

Ініціалізація екземпляра 2 3

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

2. Порівняльні магічні методи

У Python є ряд магічних методів, які розроблені для інтуїтивного порівняння між об'єктами із застосуванням операторів.

Деякі з них перелічені нижче:

  • __lt __ (self, other): використовується для виклику порівняння за допомогою <operator.
  • __le __ (self, other): використовується для виклику при порівнянні за допомогою оператора <=.
  • __eq __ (self, other): використовується для виклику порівняння за допомогою оператора ==.
  • __ne __ (самостійна, інша): використовується для виклику порівняння за допомогою оператора! =
  • __ge __ (самостійна, інша): використовується для виклику порівняння за допомогою оператора> =.

3. Оператори інфікування

Python має типові вбудовані бінарні оператори як магічні методи.

Деякі з них перелічені нижче:

  • __add__ (самостійна, інша): для доп
  • __sub__ (самостійна, інша): для віднімання
  • __mul __ (само, інше): для множення

Переваги магічного методу Пітона

Python пропонує "магічні методи", оскільки вони дійсно виконують магію для вашої програми.

Найбільші переваги:

Магічні методи Python надають простий спосіб змусити об'єкти вести себе як вбудовані типи, а це означає, що можна уникнути контрінтуїтивних чи нестандартних способів виконання основних операторів. Наприклад,

у нас є два словники «дикта» та «дикта»

dicta = (1 : "XYZ")
dictb = (2 : "LMN")
dict1 + dict2

Вихід:

Відстеження (останній останній дзвінок):

Файл "python", рядок 1, в

TypeError: непідтримувані типи операндів для +: 'dict' та 'dict'

Тепер це закінчується помилкою типу, оскільки тип словника не підтримує додавання. Тепер ми можемо розширити клас словника і додати магічний метод "__add__":

class AddDict(dict):
def __add__(self, dicts):
self.update(dicts)
return AddDict(self)
dicta = AddDict((1 : "XYZ"))
dictb = AddDict((2 : "LMN"))
print (dicta + dictb)

Тепер ми отримуємо бажаний вихід.
(1: 'XYZ', 2: 'LMN')

Таким чином, раптом магія сталася просто додаванням магічного методу. Зникла помилка, яку ми отримували раніше.

Висновок

Магічні методи - це спеціальні методи, на які посилаються опосередковано і ототожнюються із звуковими сигналами або подвійними підкресленнями, як __add__. Тепер для кращого використання класів Python треба знати принаймні якийсь магічний метод, наприклад __init__, __new__. Магічні методи операторів порівняння дають перевагу python, де екземпляри об'єктів можна порівняти за рівністю, а також нерівністю. У двох словах магічний метод робить магію програмуванням пітона, зменшуючи складність.

Рекомендовані статті

Це посібник з магічного методу Python. Тут ми обговорюємо вступ до магічного методу Python, його компоненти та переваги, а також деякі приклади. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Паліндром у PHP
  2. Ключові слова Python
  3. Python IDE для Windows
  4. Поки цикл у Python
  5. C ++ Ключові слова