Что такое dunder методы (__str__, __repr__, __iter__)?
В языке программирования Python под так называемыми дандер-методами понимаются специальные методы, которые обрамлены с обеих сторон двойными подчеркиваниями. Эти методы еще называют магическими или служебными, так как они позволяют интегрировать пользовательские классы в стандартную экосистему языка и переопределять встроенное поведение стандартных операторов и функций.
Одним из ярких примеров являются методы __str__ и __repr__, которые отвечают за текстовое представление объекта. Метод __repr__ предназначен в первую очередь для разработчиков и должен предоставлять максимально точную отладочную информацию, тогда как __str__ ориентирован на конечного пользователя и возвращает более читаемый и понятный текст для интерфейса.
Еще одна важная группа дандер-методов отвечает за реализацию различных встроенных протоколов и контейнеров. Например, метод __len__ делает ваш собственный класс совместимым со стандартной функцией len(), а методы __iter__ и __next__ превращают объект в полноценный итератор, способный выдавать элементы по одному в циклах for.
Существуют также методы для управления контекстом выполнения, такие как __enter__ и __exit__, которые активируются при использовании конструкции with и обеспечивают надежное открытие и закрытие ресурсов. Грамотное применение всего арсенала дандер-методов позволяет создавать интуитивно понятные, элегантные и гармонично встроенные в экосистему Python классы.