2010-10-05 5 views
4

Je veux montrer docstring de ma fonction, mais si je l'utilise comme celui-cià propos __doc__ python docstring

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

il ne montrera pas le docstring, juste parce que j'utilise une programmation méta délicate, comment corriger ce?

Répondre

12

Votre fonction enveloppée renvoyée par le décorateur cost_time doit avoir la docstring au lieu de func. Par conséquent, utilisez functools.wraps qui définit correctement __name__ et __doc__:

from functools import wraps 

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

    return wrapper