Вступ до магічного методу Пітона
У методах 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, його компоненти та переваги, а також деякі приклади. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -
- Паліндром у PHP
- Ключові слова Python
- Python IDE для Windows
- Поки цикл у Python
- C ++ Ключові слова