Лучшая практика декоратора Python: использование класса вместо функцииPython

Программы на Python
Ответить
Anonymous
 Лучшая практика декоратора Python: использование класса вместо функции

Сообщение Anonymous »

Насколько я понял, существует два способа создания декоратора Python: либо использовать __call__ класса, либо определить и вызвать функцию в качестве декоратора. Каковы преимущества/недостатки этих методов? Есть ли один предпочтительный метод?
Пример 1
class dec1(object):
def __init__(self, f):
self.f = f
def __call__(self):
print("Decorating", self.f.__name__)
self.f()

@dec1
def func1():
print("inside func1()")

func1()

# Decorating func1
# inside func1()

Пример 2
def dec2(f):
def new_f():
print("Decorating", f.__name__)
f()
return new_f

@dec2
def func2():
print("inside func2()")

func2()

# Decorating func2
# inside func2()


Подробнее здесь: https://stackoverflow.com/questions/102 ... a-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»