Comments 33
Скажите, а как/где сделали такой красивый скриншот?
+7
Это для меня открытие года, сколько не кодил на питоне — такое впервые увидел.
+9
UFO just landed and posted this here
Боже, Python такой клёвый! Пожалуйста, сделай так чтобы он был еще очень быстрым!
+1
Слышал, но пока не пробовал.
Меня code.google.com/p/unladen-swallow/ вдохновляет
Меня code.google.com/p/unladen-swallow/ вдохновляет
0
Вот за такое и люблю Питон — при желании можно сделать удобные и красивые вещи под конкретные задачи.
+1
Не разделяю общих восторгов, хоть и являюсь фанатом python. Это скорее «не документированная» возможность, чем какая-то реальная вещь. А то что python милашка это и так ясно :D
-1
Что значит не документированные? Есть документированный инструмент, а насколько ты умеешь им владеть зависит от тебя.
+1
Открываем исходники Django и не порем чушь.
-5
автор поста не представил ни одного прикладного примера, примеры в статье носят сугубо академический характер. И на джангу ссылок тоже не было.
0
И что? Это отменяет активное использование метаклассов в python?
-2
вот именно за такие извращения я и люблю python )
но что-то я не могу представить где это может понадобится. примеры неубедительны совсем…
но что-то я не могу представить где это может понадобится. примеры неубедительны совсем…
0
class Artist(MyRe, '/artist/\d+'): pass
Предлагаю заменить на что-то вроде makeRe('Artist', '/artist/\d+'), которое будет возвращать класс.
Или недостаточно красиво?
Предлагаю заменить на что-то вроде makeRe('Artist', '/artist/\d+'), которое будет возвращать класс.
Или недостаточно красиво?
0
тогда вложенные классы (как в примере) не получится так красиво сделать
0
А так?
class Music(MyRe):
pattern = '/music'
Artist = '/artist/\d+'
Song = '/song/\d+'
Album = '/album\d+'
Правда, в данном случае мета-классу MyRe нужно будет озадачиться конвертацией аттрибутов.
Может быть, со мной что-то не так, но мне такой вариант действительно кажется более симпатичным, чем «class Artist(MyRe, '/artist/\d+'): pass».
class Music(MyRe):
pattern = '/music'
Artist = '/artist/\d+'
Song = '/song/\d+'
Album = '/album\d+'
Правда, в данном случае мета-классу MyRe нужно будет озадачиться конвертацией аттрибутов.
Может быть, со мной что-то не так, но мне такой вариант действительно кажется более симпатичным, чем «class Artist(MyRe, '/artist/\d+'): pass».
0
А наследование?
0
Поясняю.
Мне кажется, что запись «makeRe('Artist', '/artist/\d+')», возвращающая новый полноценный класс, менее магична, более проста и понятна, чем «class Artist(MyRe, '/artist/\d+'): pass».
Не вижу никаких проблем для наследования, либо не понимаю вашего вопроса.
Мне кажется, что запись «makeRe('Artist', '/artist/\d+')», возвращающая новый полноценный класс, менее магична, более проста и понятна, чем «class Artist(MyRe, '/artist/\d+'): pass».
Не вижу никаких проблем для наследования, либо не понимаю вашего вопроса.
0
Конечно, это менее магично. Но наследования все равно не получится:
class Artist(MyClass, '/artist/\d+'): pass class RockArtist(Artist): pass
0
почему же?
Artist = makeRe('Artist', '/artist/\d+')
class RockArtist(Artist): pass
Artist = makeRe('Artist', '/artist/\d+')
class RockArtist(Artist): pass
0
Или даже так:
Artist = makeRe('/artist/\d+')
class RockArtist(Artist): pass
Только зачем? О.о
Artist = makeRe('/artist/\d+')
class RockArtist(Artist): pass
Только зачем? О.о
0
мне когда-то самому нужно было что-то похожее. в итоге я воспользовался namedtuple :)
0
Автору спасибо за статью, жаль примеры у вас слабые, да и изначальный посыл не вдохновляет: )
А вот за ссылочки в конце статьи благодарен особенно. Всем, кто решил, что метаклассы это недокументированная магия, советую пройти по этим ссылкам.
А также традиционный совет — открываем django/db/models/base.py и смотрим на первый же класс, который на самом деле метакласс.
А вот за ссылочки в конце статьи благодарен особенно. Всем, кто решил, что метаклассы это недокументированная магия, советую пройти по этим ссылкам.
А также традиционный совет — открываем django/db/models/base.py и смотрим на первый же класс, который на самом деле метакласс.
-2
Sign up to leave a comment.
«Наследование» не от классов