Pergunta

Eu quero mostrar a minha função, mas se eu usar assim

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

Ele não mostrará o Docstring, apenas porque eu uso um meta -programação complicado, como consertar isso?

Foi útil?

Solução

Sua função embrulhada retornou do cost_time decorador deve ter o docstring em vez de func. Portanto, use functools.wraps que define corretamente __name__ e __doc__:

from functools import wraps

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

    return wrapper

Outras dicas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top