Какие магические методы и для чего используются
Магическими метода называют методы, имена которых начинаются и заканчиваются двойным подчеркиванием. Магические они потому, что почти никогда не вызываются явно. Их вызывают встроенные функции или синтаксические конструкции. Например, функция len()
вызывает метод __len__()
переданного объекта. Метод __add__(self, other)
вызывается автоматически при сложении оператором +
.
Перечислим некоторые магические методы:
__init__
: инициализатор класса__add__
: сложение с другим объектом__eq__
: проверка на равенство с другим объектом__iter__
: возвращает итератор
Oct. 10, 2023, Источник
- Конструкторы / Деконструкторы
- new, init, del
- Методы сравнения
- eq, ne, lt
- Числовые
- Унарные операторы: ********abs, round (округление)
- Обычные арифметические операторы: add, sub(вычитание)
- Составное присваивание: iadd(x += 1), isub (x -= 1)
- Представление своих классов
- str, repr, hash
- Контроль доступа к атрибутам
- getattr, setattr, delatter
- Для контейнеров
- len, iter, next
- Менеджеры контекста
- enter exit
- Вызываемый метод call
Oct. 10, 2023, Источник
Магические методы (иногда также называемые специальными методами) начинаются и заканчиваются двумя подчеркиваниями (например, `__init__()`). Они позволяют определить различное поведение для объектов, таких как перегрузка операторов, создание контекстных менеджеров, управление атрибутами и т. д. Вот несколько примеров наиболее часто используемых методов и их назначения:
1. `__init__(self, ...)`: Вызывается при создании нового экземпляра класса и используется для инициализации его атрибутов.
2. `__repr__(self)`: Возвращает "официальное" строковое представление объекта. Это используется для отладки и для получения строкового представления объекта при выводе в интерактивной оболочке.
3. `__str__(self)`: Возвращает "неформальное" строковое представление объекта. Обычно используется для представления объекта в удобочитаемой форме для конечного пользователя.
4. `__len__(self)`: Возвращает длину объекта. Это используется, когда объект поддерживает операцию получения длины, например, для строк, списков и т. д.
5. `__getitem__(self, key)`: Позволяет объекту поддерживать доступ к элементам по индексу, как это делают списки и словари.
6. `__setitem__(self, key, value)`: Позволяет объекту устанавливать значение элемента по ключу.
7. `__delitem__(self, key)`: Позволяет объекту удалять элемент по ключу.
8. `__iter__(self)`: Возвращает итератор для объекта, позволяя его использовать в циклах `for`.
9. `__next__(self)`: Вызывается итератором для получения следующего элемента в последовательности.
10. `__enter__(self)`, `__exit__(self, exc_type, exc_value, traceback)`: Позволяют объекту быть контекстным менеджером, что позволяет определять действия, которые должны выполняться при входе и выходе из контекста.
Это лишь несколько примеров магических методов, которые можно определить. Они предоставляют мощные средства для определения поведения объектов и делают Python гибким и выразительным.
Feb. 17, 2024, easyoffer