BrenBarn साथ चर्चा के अनुसार, आजकल functools.wraps
भी लपेटा समारोह के हस्ताक्षर बरकरार रखता है। आईएमएचओ यह decorator
सजावटी लगभग अप्रचलित बनाता है।
from inspect import signature
from functools import wraps
def dec(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
def dec2(func):
@wraps(func)
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
def foo(a: int, b):
pass
print(signature(dec(foo)))
print(signature(dec2(foo)))
# Prints:
# (*args, **kwargs)
# (a:int, b)
नोट एक signature
और नहीं getargspec
उपयोग करने के लिए है। पाइथन 3.4 के साथ परीक्षण किया।
स्रोत
2015-12-14 09:22:37
एक और उदाहरण: [सजाए गए कार्यों के हस्ताक्षर संरक्षित] (http://stackoverflow.com/q/147816/4279) – jfs