Это gEdit, стандартная тема Cobalt, стандартная подстветка для Питона + шрифт Consolas от Микрософта. Дальше просто вырезал нужный фрагмент да сделал тень.
Не разделяю общих восторгов, хоть и являюсь фанатом python. Это скорее «не документированная» возможность, чем какая-то реальная вещь. А то что python милашка это и так ясно :D
Конечно питон-гуру могут меня поправить, но я считал метаклассами классы, создающие классы. Когда я говорил про «не документированную возможность» я говорил про использование именованых аргументов при создании класса(сабж статьи что тут сверху страницы). Так что научитесь читать и не порите чушь.
Я тоже сначала статью закончил словами, что в реальности это практически нигде не пригодится. Только как-то мрачно получалось, поэтому убрал. Думаю, что стоит расценивать только как демонстрацию гибкости Питона.
Artist = '/artist/\d+'
Song = '/song/\d+'
Album = '/album\d+'
Правда, в данном случае мета-классу MyRe нужно будет озадачиться конвертацией аттрибутов.
Может быть, со мной что-то не так, но мне такой вариант действительно кажется более симпатичным, чем «class Artist(MyRe, '/artist/\d+'): pass».
я с вами в чем-то согласен. не то что симпатичнее, скорее привычней :)
я потому и спросил у автора применение :) примеры не маштабируются: если таких атрибутов как pattern не 1, а 3-4, то передавать их в качестве базовых классов уж совсем некрасиво выходит…
Поясняю.
Мне кажется, что запись «makeRe('Artist', '/artist/\d+')», возвращающая новый полноценный класс, менее магична, более проста и понятна, чем «class Artist(MyRe, '/artist/\d+'): pass».
Не вижу никаких проблем для наследования, либо не понимаю вашего вопроса.
Автору спасибо за статью, жаль примеры у вас слабые, да и изначальный посыл не вдохновляет: )
А вот за ссылочки в конце статьи благодарен особенно. Всем, кто решил, что метаклассы это недокументированная магия, советую пройти по этим ссылкам.
А также традиционный совет — открываем django/db/models/base.py и смотрим на первый же класс, который на самом деле метакласс.
«Наследование» не от классов