def decorated(f):
@functools.wraps(f)
def wrapper():
return f()
return wrapper
@decorated
def g():
pass
functools.wraps
g
के नाम संरक्षण में अपना काम करता है:Functools.wraps का उपयोग करके सजाए गए फ़ंक्शन रैपर के नाम के साथ TypeError उठाता है। क्यूं कर? कैसे बचें?
>>> g.__name__
'g'
लेकिन अगर मैं g
लिए एक तर्क पारित, मैं एक TypeError
आवरण के नाम वाले मिलती है:
>>> g(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: wrapper() takes no arguments (1 given)
यह नाम कहां से आया है? यह संरक्षित कहां है? और क्या अपवाद को g() takes no arguments
जैसा दिखने का कोई तरीका है?
संबंधित: http://stackoverflow.com/q/29488327/3001761 – jonrsharpe