Перейти к содержанию

Другие магические методы

Другие магические методы

Это далеко не все магические методы и протоколы.

Есть магические методы, которые позволяют копировать, подсчитывать объем занимаемой памяти или высчитывать хеш объекта. Метод __hash__ определяет можно ли использовать объект в качестве ключа в словаре. Есть методы для сериализации или десериализации объектов (pickling) и для других видов интроспекции.

Плюс от версии к версии в языке появляются новые возможности. Например, у некоторых методов недавно появились асинхронные аналоги.

Поэтому даже если подробнее рассказать и об этих случаях, то все равно останется место и для примеров и творческого использования возможностей. Но главная мысль этого раздела в том, чтобы объяснить необычную природу работы Python. И дать представление о внутренней реализации работы многих механизмов.

Встроенный арсенал магических методов в Python позволяет создавать свои языки. Например, библиотека pathlib, по сути, создает язык описания файловой системы. Библиотеки для работы с данными (например pandas) переопределяют магические методы для того, чтобы очень быстро выполнять операции обработки данных в отельной быстрой виртуальной машине и эффективно используя память. Программисту кажется, что он работает с Python объектами, но на самом деле все ресурсоемкие преобразования хранятся в отдельной памяти.