2013-08-09 2 views
1

Assez lié à about python __doc__ docstring. Dans le cas où je n'utiliser pas functools et utiliser le wrapper comme mentionné dans How to print Docstring of python function from inside the function itself?, existe-t-il un moyen d'obtenir la docstring imprimé.Comment imprimer docstring en dehors d'une fonction en utilisant des wrappers?

def passmein(func): 
    def wrapper(*args, **kwargs): 
     return func(func, *args, **kwargs) 
    return wrapper 

@passmein 
def testfunc(me): 
    """This is a test function""" 
    #print me.__doc__ 

if __name__ == '__main__': 
    print testfunc.__doc__ 

Ceci n'en renvoie aucun.

+1

Pourquoi essayez-vous d'imprimer 'me .__ doc__' au lieu de' fonction_test .__ doc__'? – abarnert

+0

En attendant, si tout ce que vous demandez est comment envelopper les fonctions d'une manière qui préserve la docstring sans utiliser 'functools.wraps' ... il suffit de regarder [la source] (http://hg.python.org/cpython/file /2.7/Lib/functools.py#l15) et faites la même chose. Mais je ne peux pas imaginer pourquoi tu aurais jamais voulu ça. – abarnert

+0

@ abamert- L'impression devait l'utiliser pour afficher la docstring depuis l'intérieur de la fonction quand je l'appelle. –

Répondre

3

Je ne sais pas pourquoi vous ne voudriez pas utiliser functools.wraps, mais vous pouvez ajouter la chaîne de doc à wrapper vous:

def passmein(func): 
    def wrapper(*args, **kwargs): 
     return func(*args, **kwargs) 
    wrapper.__doc__ = func.__doc__ 
    return wrapper 

@passmein 
def testfunc(me): 
    """This is a test function""" 

if __name__ == '__main__': 
    print testfunc.__doc__ 
+0

Ah! Merci. Cela m'aide à mieux comprendre les emballages. –

Questions connexes