Введение в магический метод Python

В Python Magic методы не являются чем-то волшебным. Именно природа этих методов делает их волшебными. Метод - это не что иное, как функция в классе Python. Встроенные методы, которые не могут быть вызваны напрямую, являются «магическими методами». Магические методы не могут быть вызваны напрямую, то есть они вызваны косвенно как результат другого вызова. Легко определить магические методы, потому что они дважды подчеркнуты один спереди и другой сзади. Например, _add_. Эти двойные подчеркивания имеют определенное имя, которое является донорами. Таким образом, _add_ называется «dunder add dunder».

Что такое магический метод Python?

  • Python - это интерпретированное, объектно-ориентированное программирование, которое дает вам возможность писать процедурный код и / или объектно-ориентированное. Как мы знаем, создание объектов упрощает обработку сложных структур данных. В дополнение к этому магические методы облегчают возможность создания объектно-ориентированного программирования.
  • Перед тем, как погрузиться в магический метод, давайте разберемся, почему они вообще созданы?
  • Ниже приведен пример первого класса, использующего магический метод, а другой - без магического метода. В первом из них используется магический метод __init__, который можно использовать для инициализации более одной переменной экземпляра за один раз. Класс Sports определяется как учет двух переменных экземпляра, а именно имени и вида спорта.
  • Обе переменные экземпляра можно определить за один раз, используя магический метод __inti__. В случае 2 повторяется то же самое, но на этот раз мы используем метод set для инициализации переменной экземпляра. Здесь для 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

В Python есть много встроенных магических методов, которые можно назвать следующими:

  • __в этом__
  • __new__
  • __del__
  • __abs__
  • __добавлять__
  • __sub__
  • __mul__

Мы обсудим некоторые магические методы, чтобы лучше понять это.

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

A=5
A+3

Выход: 8

То же самое можно выполнить с помощью магического метода __add__.

A.__add__(5)

Выход: 10

Здесь оператор plus используется для добавления числового значения к числовой переменной A. То же самое можно сделать с помощью встроенного магического метода __add__. Однако, как мы уже обсуждали, магические методы не должны вызываться напрямую, а изнутри, через некоторые другие методы или действия.

Компоненты

Чтобы быть конкретными, мы можем разделить магические методы в разных категориях вместо описания компонентов.

1. Конструктор объекта и инициализатор

  • Магические методы широко используются в основах программирования на Python при создании классов и инициализации.
  • Как мы уже обсуждали магический метод __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): вызывается при сравнении с использованием оператора <.
  • __le __ (self, other): вызывается при сравнении с использованием оператора <=.
  • __eq __ (self, other): вызывается при сравнении с использованием оператора ==.
  • __ne __ (self, other): вызывается при сравнении с использованием оператора! =.
  • __ge __ (self, other): вызывается при сравнении с использованием оператора> =.

3. Инфиксные операторы

Python имеет типичные встроенные бинарные операторы как магические методы.

Некоторые из них перечислены ниже:

  • __add__ (самостоятельно, другое): для добавления
  • __sub__ (самостоятельно, другое): для вычитания
  • __mul __ (self, other): для умножения

Преимущества магического метода Python

Python предоставляет «магические методы», потому что они действительно выполняют магию для вашей программы.

Самые большие преимущества:

Магические методы Python предоставляют простой способ заставить объекты вести себя как встроенные типы, что означает, что можно избежать нелогичных или нестандартных способов выполнения базовых операторов. Например,

у нас есть два словаря "dicta" и "dicta"

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

Выход:

Traceback (последний вызов был последним):

Файл «питон», строка 1, в

Ошибка типа: неподдерживаемые типы операндов для +: '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 Magic. Здесь мы обсуждаем введение в Python Magic Method, его компоненты и преимущества, а также некоторые примеры. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

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