Pull to refresh

Comments 15

Спасибо, очень интересно.

можно создать метакласс, унаследованный от метакласса, унаследованного от type

Канонический Before/After метакласс так и работает.

В книге Putting Metaclasses to Work на какой-то странице реальная диаграмма классов System Object Model. Там 4 уровня.
Спасибо, очень доступно и весело написано, когда я изучал метаклассы читал Лутца, он конечно молодец, но занудно слегка у него.
Метаклассы только пугают своей сложностью, на самом деле они просты.
Кстати, в статье ничего не сказано про переопределение __call__ в метаклассе, а часто это бывает полезным :)
Ну как же не сказано? Сказано!
# В некоторых более продвинутых случаях также перегружается __call__,
# но этого мы сейчас не увидим.
Сорри, просто пробежал статью глазами, не вчитываясь детально, т к ничего нового не увидел.
А за что человеку минусов-то накидали? В статье действительно рассказаны некоторые тонкости устройства питона. Я вот тоже для себя много нового узнал.
Магия запрещена вне Хогвартса!
Действительно, метаклассы выглядят как магия. И понадобится только для очень сложных сервисов и фреймворков.
Немного опасался того, что такая магия может привести к прибитому гвоздями поведению. Один раз использовал фреймворк, который на каждый чих дергает базу данных, т.е. нужно поменять 15 параметров — на каждый параметр будет создан запрос. Это в лучшем случае, в худшем доходило до 30-45 запросов, т.е. 2-3 запроса на изменение параметра, типа «узнать что сейчас записано», «записать», «проверить что записалось».
Надеюсь, в Django можно всего за 2-3 запроса все выполнить
Про ORM Django отдельное спасибо, хотя бы чуточку прояснилась магия.
Да, пока не дошёл до этого примера и не прочитал его, в голове вертелась картинка про троллейбус :)
Возможно с ORM Django стоило бы начинать статью, а так многие не дочитают и до средины, хотя может это и к лучшему :)
Очень доходчиво… читая раньше о метаклассах буквально засыпал на середине статьи так и не понимая толком сфер применения этой штуки.
Only those users with full accounts are able to leave comments. Log in, please.