Магические методы (также называемые "dunder methods" от "double underscore") - это специальные методы в Python, которые начинаются и заканчиваются двойным подчеркиванием (__
). Они позволяют классам определять свое поведение для встроенных операций и взаимодействий.
+
, -
, ==
и др.)class Example:
def __new__(cls, *args, **kwargs): # Контролирует создание экземпляра
instance = super().__new__(cls)
return instance
def __init__(self, value): # Контролирует инициализацию
self.value = value
def __del__(self): # Вызывается при удалении объекта
print("Объект удаляется")
def __str__(self): # Для str() и print()
return f"Example with value: {self.value}"
def __repr__(self): # Для repr() и интерактивного режима
return f"Example({self.value})"
def __eq__(self, other): # ==
return self.value == other.value
def __lt__(self, other): # <
return self.value < other.value
def __add__(self, other): # +
return Example(self.value + other.value)
def __mul__(self, other): # *
return Example(self.value * other.value)
def __getitem__(self, key): # Доступ по индексу []
return self.data[key]
def __len__(self): # len()
return len(self.data)
def __call__(self, *args): # Позволяет вызывать объект как функцию
return sum(args) + self.value
def __enter__(self): # Начало блока with
print("Начало контекста")
return self
def __exit__(self, exc_type, exc_val, exc_tb): # Конец блока with
print("Конец контекста")
__call__
)__new__
)Магические методы - это мощный механизм Python, который:
Использование магических методов - признак продвинутого понимания Python и путь к созданию "питонического" кода.