2013-08-09 5 views
1

Относительно about python __doc__ docstring. В случае, если я не использую functools и использую обертку, как указано в How to print Docstring of python function from inside the function itself?, есть способ получить напечатанную docstring.Как напечатать docstring вне функции с помощью оберток?

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__ 

Это не возвращает.

+1

Почему вы пытаетесь напечатать 'мне .__ doc__' вместо' testfunc .__ doc__'? – abarnert

+0

Между тем, если все, что вы задаете, - это то, как обернуть функции таким образом, чтобы сохранить docstring без использования 'functools.wraps' ... просто посмотрите на [источник] (http://hg.python.org/cpython/file /2.7/Lib/functools.py#l15) и сделать то же самое. Но я не могу представить, почему вы когда-либо хотели этого. – abarnert

+0

@ abamert- Печать должна была использовать его для отображения docstring изнутри функции, когда я ее вызываю. –

ответ

3

Я не знаю, почему вы не хотели бы использовать functools.wraps, но вы можете добавить строку документации к wrapper себя:

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

Ах! Благодарю. Это помогает мне лучше понять упаковщики. –

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

  • Нет связанных вопросов^_^