метаклассы
-
Хабрахабр
Введение в метаклассы
В стандартной библиотеке языка программирования C++ существует много классов, наделенных если не абсолютно одинаковыми свойствами, то очень похожими. Так, стандарт вводит отдельное требование BitmaskType, описывающее свойства, какими должны обладать битовые маски в стандартной библиотеке: для них должен быть определены операции «и», «или», «не», а значение 0 должно представлять пустую маску. В стандартной библиотеке классов, от которых требуется соблюдение этого требования,…
Читать далее » -
Хабрахабр
[Перевод] Метаклассы в Python
Привет, Хабр! У нас продолжается распродажа в честь черной пятницы. Там вы найдете много занимательных книг. Возможен вопрос: а что такое метакласс? Если коротко, метакласс относится к классу точно как класс к объекту. Метаклассы – не самый популярный аспект языка Python; не сказать, что о них воспоминают в каждой беседе. Тем не менее, они используется в весьма многих статусных проектах: в частности, Django ORM[2], стандартная библиотека абстрактных…
Читать далее » -
Хабрахабр
Python: метапрограммирование в продакшене. Часть вторая
При правильном использовании оно позволяет быстро и элегантно реализовывать сложные паттерны проектирования. Мы продолжаем говорить о метапрограммировании в Python. В прошлой части этой статьи мы показали, как можно использовать метаклассы, чтобы изменять атрибуты экземпляров и классов. Больше о возможностях метапрограммирования вы сможете узнать на курсе Advanced Python. Теперь посмотрим как можно изменять вызовы методов. Отладка и трейсинг вызовов Например, заменить…
Читать далее » -
Хабрахабр
Python: метапрограммирование в продакшене. Часть первая
Помимо этого, такие известные Python-фреймворки, как Django, DRF и SQLAlchemy, используют метаклассы, чтобы обеспечить легкую расширяемость и простое переиспользование кода. Многие считают, что метапрограммирование в Python излишне усложняет код, но если использовать его правильно, то можно быстро и элегантно реализовать сложные паттерны проектирования. Еще больше о возможностях метапрограммирования можно узнать на курсе Advanced Python. В этой статье расскажу, почему не…
Читать далее »