Синтаксис @decorator
в Python - это не что иное, как синтаксический сахар.
код
@decorator
def foo():
pass
не более чем
def foo():
pass
foo = decorator(foo)
Окончательный результат зависит только от того, что вы хотите, чтобы он был.
Вы можете использовать класс как decorator
и получите экземпляр объекта из этого класса с foo
как __init__
arg.
Вы можете использовать объект, созданный с некоторыми параметрами, как декоратор, как в коде ниже
class Decorator(object):
def __init__(self, arg1, arg2):
pass
def __call__(self, foo):
return foo()
@Decorator(arg1_value, arg2_value)
def foo():
pass
Это только вы, кто решает, как будет выглядеть ваш код и что он не будет делать ни с каким шаблоном, ни с кем-либо из мира Java:)