Python-декоратор от цепных звонков - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь создать декоратор из цепочки звонков.Кажется, он не поддерживается синтаксисом.

from functools import wraps


class Bar:
    def wrapper(self):
        def _outer(fun):
            @wraps(fun)
            def _f(*a, **kw):
                print('I am in decorator')
                return fun(*a, **kw)
            return _f
        return _outer


def foo():
    return Bar()


# @foo().wrapper()  # Invalid syntax
# def f():
#     pass


# @(foo().wrapper())  # Invalid syntax
# def f():
#     pass


def f():
    pass


f = foo().wrapper()(f)
f()

Я что-то упустил?По некоторым причинам такая вещь была бы чрезвычайно полезна в моем проекте.

Спасибо

1 Ответ

3 голосов
/ 03 июня 2019

Вы можете сделать это:

wrapper = foo().wrapper()

@wrapper
def foo():
  pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...