2010-10-05 2 views
4

я хочу показать строку документации в моей функции, , но если я использую как этото питоне __doc__ строке документации

@cost_time 
def func(): 
    "define ...." 
    blabla 
print func.__doc__ 

он не будет показывать строку документации, только потому, что я использую некоторую метапрограммированию каверзной, , как можно исправить это?

ответ

12

Ваша завернутая функция, возвращаемая из декоратора cost_time, должна иметь docstring вместо func. Поэтому используйте functools.wraps, который правильно устанавливает __name__ и __doc__:

from functools import wraps 

def cost_time(fn): 
    @wraps(fn) 
    def wrapper(): 
     return fn() 

    return wrapper 
Смежные вопросы