Как передать вывод функции декоратору

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

Я заинтересован в передаче значения to_decorator функции декоратора, как показано ниже.

Это возможно?

 def test(self, *args):
    return "from test"


def decorate(function):
    def wrap_function(*args, **kwargs):
        print(*args)
        return function(*args, **kwargs)

    return wrap_function


class Sample():
    @decorate
    def message(*args, **kwargs):
        to_decorator = test(*args)
        print(to_decorator)


Sample.message("Hello123")

Заранее спасибо.

Попробуйте запустить этот код, и вы увидите, возможно ли это. Во всяком случае, ваш вопрос непонятен. Во-первых, ваш код имеет плохой отступ, что недопустимо в Python. Затем он ссылается на to_decorator перед его определением, что не работает. Однако также неясно, чего вы хотите этим добиться. Можете ли вы написать код, функционально эквивалентный тому, чего вы хотите достичь без декораторов?

Ulrich Eckhardt 30.03.2018 10:45

Я думаю, что здесь было бы здорово использовать пример ввода / вывода. То, о чем вы просите (передача аргумента декоратору), возможно, но ваш пример использования выше нечетный. to_decorator не будет инициализирован на этом этапе, и неясно, что вы ожидаете от этого.

Robert Seaman 30.03.2018 10:46

Я хотел бы передать вывод тестовой функции функции декоратора to_decorator. Возможно ли это сделать.

Ravi Kiran Gururaja 30.03.2018 10:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
42
0

Другие вопросы по теме