Я пытаюсь обернуть голову вокруг декораторов. Поэтому я попытался передать аргументы декоратору и обработать их внутри функции декоратора. Я просто передаю список декоратору и хочу, чтобы мой список обрабатывался внутри функции декоратора после вызова оригинальной функции. Вот мой кодДекораторы Python. Ошибка при передаче аргументов
def decorator_function(original_function):
def new_function(*args, **kwargs):
print("Your list shall be processed now.")
print args
#Do something with the passed list here.Say, call a function Process(list,string)
original_function(*args, **kwargs)
return new_function
@decorator_function([1,2,3])
def hello(name = None):
if name == None:
print "You are nameless?"
else:
print "hello there,",name
hello("Mellow")
Я получаю эту ошибку
Your list shall be processed now.
(<function hello at 0x7f9164655758>,)
Traceback (most recent call last):
File "anno_game.py", line 14, in <module>
def hello(name = None):
File "anno_game.py", line 8, in new_function
original_function(*args, **kwargs)
TypeError: 'list' object is not callable
Может кто-нибудь пожалуйста, скажите мне, что я перепутались здесь и мне точку в правильном направлении?
Я также настоятельно рекомендую взглянуть на е-Сатис ответ на http://stackoverflow.com/questions/739654/how-can-i-make-a-chain-of-function-decorators-in-python, который имеет одно из лучших, наиболее понятных объяснений декораторов, которые я прочитал на сегодняшний день, включая декораторов, которые принимают аргументы. – lemonhead