Что нужно сделать
Реализуйте декоратор counter
, считающий и выводящий количество вызовов декорируемой функции.
Для решения задачи нельзя использовать операторы global
и nonlocal
(об этом мы ещё расскажем).
Что оценивается
- Результат вычислений корректен.
- Переменные, функции и собственные методы классов имеют значащие имена (не
a
,b
,c
,d
). - Классы и методы/функции имеют прописанную документацию.
- Есть аннотация типов для методов/функций и их аргументов (кроме
args
иkwargs
). Если функция/метод ничего не возвращает, то используетсяNone
. - Во всех декораторах используется
functools.wraps
.
def counter(func):
"""Декоратор считает количество вызовов функции"""
def inner(*args, **kwargs):
inner.count += 1
result = func(*args, **kwargs)
return result
inner.count = 0
return inner
@counter
def test1():
pass
@counter
def test2():
pass
test1()
test1()
test2()
test2()
test2()
print(test1.count)
print(test2.count)