124 подписчика
· 27.06.2024Вопрос
Что такое магические методы в Python? Чем они отличаются от обычных?
4 коммента
· 28.06.2024
Магия вне Хогвартса запрещена
0
ответить
коммент удалён
· 28.06.2024
Ответ редакции:
Магическими методами в Python приято называть ряд специальных методов класса, которые позволяют менять поведение пользовательских типов данных (классов) при использовании связанных с ними конструкций языка. Синтаксически они отличаются тем что название их с обеих сторон обрамлено в два нижних подчеркивания. Такой синтаксис называют "дандер" (от англ. double underscore)
Так например для объектов классов с реализованным магическим методом "add" возможно выполнять операции сложения при помощи спецсимвола "+". Метод str определяет результат возвращаемый при вызове build-in функции "str(…)" от объекта.
Вот еще некоторые из самых часто используемых:
- init - инициализация объекта класса
- new - конструктор объекта класса
- enter, exit - "API" контекстного менеджмента
- call - вызов объекта класса
- repr - однозначное строковое представление объекта
- del - удаление сущности
- ...
Резюмируя, магические методы предоставляют "API" к самому языку Python и регламентируют единый синтаксис популярных действий с пользовательски классами.
ВАЖНО: магические методы не следует вызывать в явном виде, например, "foo.call(…)". Такой синтаксис следует использовать только "под капотом" в ситуациях, когда без этого не обойтись, в остальных же 99% следует обращаться к этим методам посредствам специального связанного с ними синтаксиста. Для данного примера: "foo(...)"
0
ответить
коммент удалён
· 28.06.2024
Тем, что они вызываются сами. Я наврятли смогу объяснить понятным языком, лучше понять самому на практике
0
ответить
коммент удалён
· 28.06.2024
Ruby. Вот где настоящая магия
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён