Sono in corso per imparare Python. Spero che qualcuno mi punti per correggere il modo.
Questo è quello che mi piacerebbe fare qui di seguito:Come posso passare una variabile in un decoratore all'argomento della funzione in una funzione decorata?
def decorate(function):
def wrap_function(*args, **kwargs):
str = 'Hello!' # This is what I want
return function(*args, **kwargs)
return wrap_function
@decorate
def print_message():
# I'd like to pass 'str' as mentioned above
# to any functions' argument like below:
print(str) # 'str' is same as above
Qualche idea? Grazie in anticipo.
Si noti che la prima soluzione viene anche ottenuta usando 'functools.partial()' (ma solo dalla versione 2.6). Lo stesso modulo offre anche la funzione 'wraps()' che può essere usata con i decoratori per mantenere il nome e il doc della funzione originale. – RedGlyph
@RedGlyph: perché usare 'functools.partial()' solo dalla versione 2.6? la documentazione non dice nulla a riguardo tranne che il modulo functools è nuovo in pyhton 2.5. –
Grazie a Tor Valamo. La soluzione alternativa è chiara per me. Ma che dire se la funzione decorata è un metodo di istanza? L'argomento del metodo di istanza dovrebbe essere qualcosa come: 'def print_message (str, self, * args, ** kwargs):' È corretto? Grazie ancora. – Japboy