Как мне показать мою argspec / docstring в bpython? - PullRequest
0 голосов
/ 25 марта 2011

Я только начинаю использовать bpython, в основном потому, что я действительно думаю, что это очень поможет офисам. В bpython он постоянно показывает текст справки при вводе. Например

>>> zip(
┌────────────────────────────────────────────────────────────────────────┐
│ zip: (seq1 [, seq2 [...]])                                             │
│ zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]            │
│                                                                        │
│ Return a list of tuples, where each tuple contains the i-th element    │
│ from each of the argument sequences.  The returned list is truncated   │
│ in length to the length of the shortest argument sequence.             │
└────────────────────────────────────────────────────────────────────────┘

Это отлично подходит для менее образованных (и даже новичков, как я). Однако ничего не отображается для моих пользовательских функций. Я подумал, что, может быть, это просто отображение строки документации, поэтому я добавил строки документации в свои функции. Ничего не изменилось. Может кто-нибудь объяснить мне, что он показывает здесь и как я добавляю его к своим функциям?

EDIT: Это должно быть какая-то странная проблема наследования. Это делается с помощью пользовательских менеджеров Django.

class PublicationManager(models.Manager):
    """blarg"""
    def funct(arg):
        """foo"""
        pass

class Publication(models.Model):
    objects = PublicationManager()

Ввод PublicationManager.funct( показывает строку документации, а Publication.objects.funct( - нет. Я предполагаю, что нубы должны будут понять это для себя.

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

Добавьте строку документации в качестве первой строки вашей функции:

def funct():
    "This function is self-documenting"
    pass

Используйте тройные кавычки, если они охватывают несколько строк:

def funct():
    """
     This function doesn't expect arguments
     and returns zero.
    """
    return 0

Чтобы получить справку в репле, используйте help ():

>>> help(funct)

Или, чтобы программно добраться до строки документации, используйте __doc__:

>>> print funct.__doc__
This function doesn't expect arguments
and returns zero.
>>> 
0 голосов
/ 25 марта 2011

Добавьте его после строки функции:

def myFunc():
    """You Doc String Here
    (even multiline)"""
    pass

То же самое для классов:

class MyClass():
    """Class Documentation"""
    def __init__(self):
        """Function Documentation"""
        pass

Но для модулей вы пишете документы вверху файла:

#File: mymodule.py
"""Module Documentation"""

class Classes()...
def functions()...

Теперь, если вы импортируете это в свой основной файл:

import mymodule.py
print mymodule.__doc__
...