Dunder методы (сокращение от double underscore) — это специальные методы, окружённые двойными подчёркиваниями, такие как __init__ или __len__. Они позволяют пользовательским классам органично интегрироваться со встроенными операциями и синтаксисом Python.
Python вызывает эти методы неявно, когда ты используешь встроенные функции или операторы. Это означает, что твои пользовательские объекты могут вести себя как встроенные типы Python — без необходимости вызывать какие-то специальные функции.
__init__ — инициализирует новый объект (вызывается через MyClass())__str__ — определяет человекочитаемое строковое представление (вызывается через str() или print())__repr__ — определяет представление для разработчика (вызывается через repr())__len__ — добавляет поддержку len() для твоего объекта__add__ — перегружает оператор +__eq__ — перегружает оператор ==__hash__ — делает объекты пригодными для использования в множествах или в качестве ключей словаря__getitem__ — добавляет поддержку обращения по индексу через квадратные скобки: obj[key]__call__ — делает экземпляр вызываемым как функцияclass Vector:
def __init__(self, x, y):
self.x, self.y = x, y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
v = Vector(1, 2) + Vector(3, 4)
print(v) # Vector(4, 6)
Dunder методы — это фундамент Pythonic-дизайна. Реализуя их, ты позволяешь своим классам вести себя как встроенные типы, делая код более интуитивным, читаемым и совместимым со стандартными инструментами и синтаксисом Python.
Dunder методы вызываются явно программистом всякий раз, когда нужно выполнить встроенную операцию над пользовательским объектом.
Новый — ещё не проверен сообществом
Вы