Может кто-нибудь объяснить, почему следующий код не работает? Я пытаюсь создать декоратор класса, чтобы предоставить новые методы __repr__
и __init__
, и если я украшу его классом, то будет определен метод rep. Мне удалось исправить исходную проблему, заставив декоратора модифицировать оригинальный класс деструктивно вместо создания нового класса (например, он определяет новые методы, а затем просто использует cl.__init__ = __init__
для их перезаписи). Теперь мне просто интересно, почему попытка на основе подкласса не сработала.Классы более высокого порядка в Python
def higherorderclass(cl):
@functools.wraps(cl)
class wrapped(cl):
def __init__(self, *args, **kwds):
print 'in wrapped init'
super(wrapped, self).__init__(*args, **kwds)
def __repr__(self):
return 'in wrapped repr'
return wrapped
для стартеров, '@ functools.wraps()' относится к * Функция декораторы * только , –