о питоне __doc__ docstring - PullRequest
       5

о питоне __doc__ docstring

4 голосов
/ 05 октября 2010

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

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

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

Ответы [ 2 ]

12 голосов
/ 05 октября 2010

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

from functools import wraps

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

    return wrapper
2 голосов
/ 05 октября 2010

Использование functools.wraps().

...