2013-11-21 4 views
3

help() doesn't show the __doc__ частичного объекта. Тем не менее, пример в docs множеств это:Почему я должен установить __doc__ частичного объекта в Python?

>>> from functools import partial 
>>> basetwo = partial(int, base=2) 
>>> basetwo.__doc__ = 'Convert base 2 string to an int.' 
>>> basetwo('10010') 
18 

Почему установить __doc__, если это не помогает?

+1

По-видимому, 'pydoc' не знает об объектах' partial' и не ожидает, что у них будет врачевание. Теоретически разумный инструмент. – chepner

ответ

0

установка __doc__ для частичной функции так же, как это делает для большей функции:

def somefunc(somerandomarg): 
    """This is a docstring 
    What I am doing is shorthand for __doc__ = "random docstring" 
    For partials, you can't do this, so you set it with __doc__""" 
    pass 

Это всегда хорошо, чтобы документировать все, даже обертоны.

+0

Я ожидал, что они тоже будут такими же. Но если вы прочитаете вопрос 'help(), который я связал, вы увидите, что они не совпадают; частичная функция не является функцией, а объектом. 'help()' покажет __doc__ частичного класса и его методы. –

+0

Как говорится в ссылке, вы не можете переопределить это, не испортив код Python. В Python, однако, pydoc покажет docstring, когда вы вводите его. –

+0

Что вы подразумеваете под этим типом? Когда я набираю это в part.py, а 'pydoc part.basetwo' показывает __doc__ частичного, а не __doc__, я набрал. –