arrow

назад

ask

Вопрос

Что такое магические методы в Python? Чем они отличаются от обычных?

repost

301

input message

напишите коммент


4 коммента

Ruby. Вот где настоящая магия

0

ответить

Магия вне Хогвартса запрещена

0

ответить

Ответ редакции:

Магическими методами в Python приято называть ряд специальных методов класса, которые позволяют менять поведение пользовательских типов данных (классов) при использовании связанных с ними конструкций языка. Синтаксически они отличаются тем что название их с обеих сторон обрамлено в два нижних подчеркивания. Такой синтаксис называют "дандер" (от англ. double underscore)

Так например для объектов классов с реализованным магическим методом "add" возможно выполнять операции сложения при помощи спецсимвола "+". Метод str определяет результат возвращаемый при вызове build-in функции "str(…)" от объекта.

Вот еще некоторые из самых часто используемых:

  • init - инициализация объекта класса
  • new - конструктор объекта класса
  • enter, exit - "API" контекстного менеджмента
  • call - вызов объекта класса
  • repr - однозначное строковое представление объекта
  • del - удаление сущности
  • ...

Резюмируя, магические методы предоставляют "API" к самому языку Python и регламентируют единый синтаксис популярных действий с пользовательски классами.

ВАЖНО: магические методы не следует вызывать в явном виде, например, "foo.call(…)". Такой синтаксис следует использовать только "под капотом" в ситуациях, когда без этого не обойтись, в остальных же 99% следует обращаться к этим методам посредствам специального связанного с ними синтаксиста. Для данного примера: "foo(...)"

0

ответить

Тем, что они вызываются сами. Я наврятли смогу объяснить понятным языком, лучше понять самому на практике

0

ответить

еще контент в этом сообществе

пост закреплён — пока закрепить можно только один пост

trash bin
перейти к нему не получится