Класс декоратор: В чём отличие @Decorator от @Decorator()

Всем привет!
Собственно сабж.
Ребят, не в службу, а в дружбу, объясните, пожалуйста, почему если в нижеуказанном коде написать @FuncDec()
, то всё работает, а если написать @FuncDec
, то интерпретатор орёт, что в__init__
подали 2 аргумента вместо одного?
Точнее я понимаю, почему интерпретатор орёт во втором случае, но я хоть убей не врубаюсь, что меняется, когда я ставлю скобки...
Заранее огромное спасибо!
from functools import wraps
class FuncDec:
def __init__(self):
pass
def __call__(self, f):
@wraps(f)
def wrapper(*args, **kwargs):
f(*args, **kwargs)
print('I am working properly')
return wrapper
@FuncDec()
def foo():
print('Hello')
foo()
# Hello
# I am working properly
28 ноября 2020 в 20:00