История изменений
Исправление
pylin,
(текущая версия)
:
С учетом некоторых дополнений: декоратор класса это функция, которая срабатывает при определении класса. Декоратор класса, основан на том свойстве Python, что сам класс то же объект и определением класса можно оперировать как объектом. Исходя из этого декоратор может делать нечто такое, например:
def add_field(cls):
cls.foo = 'decorator here'
Кроме того сами классы могут выступать как декораторы, то есть класс-декоратор это такой класс, который должен в результате своей работы вернуть другой класс, класс который декорируем. Все это опять же возможно посколько сам класс это объект для других функций и классов.
Как пример с SO:
class MyDecorator(object):
def __init__(self, argument):
self.arg = argument
def __call__(self, fn):
@functools.wraps(fn)
def decorated(*args, **kwargs):
print "In my decorator before call, with arg %s" % self.arg
fn(*args, **kwargs)
print "In my decorator after call, with arg %s" % self.arg
return decorated
В ходе отработки данного класса как декоратора будет вызван метод __call__
Исправление
pylin,
:
С учетом некоторых дополнений: декоратор класса это функция, которая срабатывает при определении класса. Декоратор класса, основан на том свойстве Python, что сам класс то же объект и определением класса можно оперировать как объектом. Исходя из этого декоратор может делать нечто такое, например:
def add_field(cls):[
cls.foo = 'decorator here'
Кроме того сами классы могут выступать как декораторы, то есть класс-декоратор это такой класс, который должен в результате своей работы вернуть другой класс, класс который декорируем.
Исправление
pylin,
:
С учетом некоторых дополнений: декоратор класса это функция, которая срабатывает при определении класса. Декоратор класса, основан на том свойстве Python, что сам класс то же объект и определением класса можно оперировать как объектом. Исходя из этого декоратор может делать нечто такое, например:
def add_field(cls): cls.foo = 'decorator here'
Кроме того сами классы могут выступать как декораторы, то есть класс-декоратор это такой класс, который должен в результате своей работы вернуть другой класс, класс который декорируем.
Исправление
pylin,
:
С учетом некоторых дополнений: декоратор класса это функция, которая срабатывает при определении класса. Декоратор класса, основан на том свойстве Python, что сам класс то же объект и определением класса можно оперировать как объектом. Исходя из этого декоратор может делать нечто такое, например: def add_field(cls): cls.foo = 'decorator here' Кроме того сами классы могут выступать как декораторы, то есть класс-декоратор это такой класс, который должен в результате своей работы вернуть другой класс, класс который декорируем.
Исходная версия
pylin,
:
С учетом некоторых дополнений: декоратор класса это функция, которая срабатывает при определении класса. Декоратор класса, основан на том свойстве Python, что сам класс то же объект и определением класса можно оперировать как объектом. Исходя из этого декоратор может делать нечто такое, например: def add_field(cls): cls.foo = 'decorator here' Кроме того сами классы могут выступать как декораторы, то есть класс-декоратор это такой класс, который должен в результате своей работы другой класс, класс который декорируем.