> Что такое dunder методы (магические методы) в Python (Python)
Уровень: junior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: ProFinansy, ООО Диджитал Сектор Поддержка, К Технологии, ООО Бергманн Инфотех Групп Ост, ARX
Стек: Python
> Пример ответа
Dunder-методы (от англ. double underscore - двойное подчеркивание), также называемые магическими методами, - это специальные методы в Python, имена которых начинаются и заканчиваются двумя подчеркиваниями (например, __init__, __str__, __add__). Они позволяют переопределять поведение объектов для встроенных операций и функций языка.
Основное назначение - реализация протоколов Python (итерация, контекстные менеджеры, арифметика, сравнение и т.д.). Например:
__init__- конструктор, вызывается при создании объекта.__str__- возвращает строковое представление дляprint()иstr().__len__- возвращает длину дляlen().__eq__- определяет поведение оператора==.__enter__и__exit__- для работы сwith.
Пример использования:
PYTHONclass Point:def __init__(self, x, y):self.x = xself.y = ydef __str__(self):return f"Point({self.x}, {self.y})"def __add__(self, other):return Point(self.x + other.x, self.y + other.y)p1 = Point(1, 2)p2 = Point(3, 4)print(p1 + p2) # Point(4, 6)
Dunder-методы не вызываются напрямую (хотя технически это возможно), а срабатывают автоматически при использовании соответствующих операций. Они делают пользовательские классы более "питоничными", интегрируя их в стандартный синтаксис языка.
> Похожие задачи по Python
Какой опыт работы с Kubernetes и какие задачи выполнял
Как устроено управление памятью в Python
Что такое транзакции в базах данных и для чего они нужны
Что такое типизация в Python
> Похожие задачи по backend
Какой опыт работы с Kubernetes и какие задачи выполнял
Как устроено управление памятью в Python
Что такое транзакции в базах данных и для чего они нужны
Что такое типизация в Python
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью