我想創建一個新的裝飾器來代替@wraps(f)
,它可以做任何其他的魔術@wraps(f)
。我會怎麼做?擴展functools.wraps裝飾器的功能
具體來說,我有幾個裝飾器的形式爲:
def decorator(f):
@wraps(f)
def wrapper(*args, **kwargs):
# does some stuff in here
return f(*args, **kwargs)
if not hasattr(wrapper, '_first_line'):
wrapper._first_line = inspect.getsourcelines(f)[1]
return wrapper
好像我應該能夠創造這樣一個@wraps_with_first_line(f)
裝飾,將盡一切@wraps(f)
是因爲這樣做以及if not hasattr(wrapper, '_first_line'): wrapper._first_line = inspect.getsourcelines(f)[1]
。
我最終使用了你的答案和Sven的混合體,但它更像你的答案。 – Isaac 2012-04-06 03:02:36