def decorated(f):
@functools.wraps(f)
def wrapper():
return f()
return wrapper
@decorated
def g():
pass
functools.wraps
làm công việc của mình tại bảo quản tên của g
:Chức năng được trang trí bằng cách sử dụng functools.wraps tăng TypeError với tên của trình bao bọc. Tại sao? Làm sao để tránh?
>>> g.__name__
'g'
Nhưng nếu tôi vượt qua một cuộc tranh cãi để g
, tôi nhận được một TypeError
chứa tên của wrapper:
>>> g(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: wrapper() takes no arguments (1 given)
Tên này đến từ đâu? Nó được bảo quản ở đâu? Và có cách nào để làm cho ngoại lệ trông giống như g() takes no arguments
?
Liên quan: http://stackoverflow.com/q/29488327/3001761 – jonrsharpe