Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> ВИДЕОКУРС Python Разработчик

Best Practice по решению прикладных задач и освоению инструментов, применяемых при разработке, веб-приложений.

>> ОНЛАЙН ТЕСТ Сможешь обучить робота?

Курс предназначен для программистов и аналитиков, которых интересует область машинного обучения и анализа данных.

декораторы python

Декораторы функций в Python

Декораторы функций - обеспечивают способ определять специальные режимы работы для функции, обертывая их дополнительным слоем логики, реализованной в виде других функций.

class A:
    @staticmethod # декоратор в Python для создания статических методов
    def summ(x,y):
        return x+y
a = A.summ(6,7)
print a
# 13
class B: # альтернативная реализация класса А
    def summ(x,y):
        return x+y
    summ = staticmethod(summ)
b = B.summ(6,7)
print b
# 13
class Counter: # класс как декоратор
    def __init__(self, func): # принимаем в качестве параметра декорируемую функцию
        self.func = func # запоминаем декорируемую функцию
        self.calls = 0
    def __call__(self, *args): # вызов декоратора, *args - аргументы декорируемой функции
        self.calls += 1
        if self.calls >= 3:
            print "function summ call %s" % (self.calls,) # если функция summ была запущена 3 или больше раз
        return self.func(*args)
@Counter
def summ(a,b,c):
    return a+b+c
print summ(5,9,2)
print summ(1,7,2)
print summ(4,9,3)
# 16
# 10
# function summ call 3
# 16
Далее...