Как использовать pydoc для создания списка методов и свойств в файле Python

У меня есть несколько классов, которые я написал, и в некоторые из них я добавил некоторые строки документации, например, в заголовок класса.

Теперь я хотел бы использовать pydoc для создания документации, но я понял, что pydoc ничего не напечатает, если я на самом деле не напишу часть документа внутри класса, а это не то, что я хочу.

Есть ли способ, чтобы pydoc сгенерировал список всех свойств, методов и их типов, включая тип требуемого параметра (если есть) и тип возвращаемого значения (если есть)?

Если у меня есть такой класс:

class myclass(object):

    def __init__(anumber=2, astring="hello"):
        self.a = anumber
        self.b = astring

    def printme(self):
        thestring = self.a + self.b + "\nthat's all folks\n"
        return thestring

    def setvalues(self, a_number, a_string):
        self.a = a_number
        self.b = a_string

Я хотел бы напечатать что-то, что включает имя класса, метод класса, тип данных:

class name
what parameters it takes in the init and the type of the parameters

method name
what parameters it takes and the type of the parameters
what value return and its type.

Я считаю, что pydoc этого не сделает. Есть ли другой способ сделать это?

Я могу добавить строки документа для объяснения позже, но прежде всего я хотел бы распечатать, что находится в моих модулях, чтобы знать, что он принимает, что он возвращает и так далее.


person Community    schedule 10.09.2015    source источник


Ответы (1)


Pydoc должен предоставить вам детали скелета, такие же, как help(myclass), это покажет вам сигнатуры функций вашего класса без каких-либо строк документации. Вы можете использовать модуль pydoc для получения этой справочной информации:

$ pydoc MyClass.myclass
Help on class myclass in MyClass:

class myclass(builtins.object)
 |  Methods defined here:
 |  
 |  __init__(anumber=2, astring='hello')
 |  
 |  printme(self)
 |  
 |  setvalues(self, a_number, a_string)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

Вы можете сделать это программно с помощью модуля pydoc:

>>> import pydoc
>>> import MyClass
>>> h = pydoc.plain(pydoc.render_doc(MyClass))
>>> print h
person AChampion    schedule 10.09.2015