Специальные методы классов в 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. Они могут сделать ваш код более чистым и интуитивно понятным, обеспечивая при этом большую гибкость и контроль над вашими объектами.
Содержание: