
Специальные методы классов в Python, также известные как «магические методы», позволяют нам переопределять встроенное поведение Python, именно они стоят за многими удобными особенностями языка. Они начинаются и заканчиваются двойными подчеркиваниями (например, __init__, __str__).
Специальные методы определяются так же, как и обычные методы, но они имеют определенные имена, которые Python использует для вызова их автоматически в определенных ситуациях.
class MyInt:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.valueМетод __init__ вызывается при создании экземпляра класса. Он используется для инициализации атрибутов объекта.
class Car:
def __init__(self, color):
self.color = colorМетод __str__ возвращает строковое представление объекта. Он используется встроенной функцией str(object) и при попытке преобразования объекта в строку.
class Car:
def __init__(self, color):
self.color = color
def __str__(self):
return f"Автомобиль цвета {self.color}"Метод __add__ позволяет определить поведение оператора + для объектов данного класса.
class MyInt:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.valueСуществует множество других специальных методов, которые позволяют вам переопределить большинство встроенных операторов и функций Python. Например:
__sub__, __mul__, __truediv__, __floordiv__, __mod__, __pow__ — для арифметических операций -, *, /, //, %, ** соответственно.
__eq__, __ne__, __lt__, __gt__, __le__, __ge__ — для сравнений ==, !=, <, >, <=, >= соответственно.
__len__ — для определения длины объекта при вызове len(object).
__getitem__, __setitem__ — для доступа к элементам объекта по индексу или ключу.
Специальные методы являются одним из наиболее мощных инструментов в Python, позволяющих вам настроить поведение классов и использовать множество встроенных операций Python. Они могут сделать ваш код более чистым и интуитивно понятным, обеспечивая при этом большую гибкость и контроль над вашими объектами.
Содержание: