6

声明从特定类继承的类时:

class C(dict):
    added_attribute = 0

类的文档C列出了dict(通过help(C)pydoc)的所有方法。

有没有办法从自动生成的文档中隐藏继承的方法(文档字符串可以引用基类,用于非覆盖方法)?还是不可能?

这将很有用:在其类之后pydoc列出模块中定义的函数。因此,当类的文档很长时,会在模块提供的新功能出现之前打印出很多不太有用的信息,这使得文档更难被利用(您必须跳过所有继承方法的文档直到您达到特定于正在记录的模块的内容)。

4

3 回答 3

3

我遇到了同样的问题,并在 Python 2.7.6 for Windows (x86) 上通过在 pydoc.py 中添加 3 行来解决它。指示:

  1. 制作自己的 Lib\pydoc.py 副本
  2. 在文件中找到所有出现的inherited变量(3 次,根据我的计数),并在定义后立即将其设置为一个空列表。例如,我得到了第 809 行:

    attrs, 继承 = _split_list(attrs, lambda t: t[2] is thisclass)

并写inherited = []在它下面的新行上。

现在它不再打印继承的方法了。

于 2014-07-23T21:36:33.500 回答
1

__dir__您可以使用返回其自己的属性列表的特殊方法为您的类提供一个元类。Pydoc 将使用此列表。

笔记:

  • 这也会影响dir().
  • 在极少数情况下,已知使用元类可以打开通往地狱维度的门户。
于 2012-06-12T06:40:20.637 回答
0

pydoc并且help内置不支持这一点,但是没有理由你不能编写你自己的工具(也许通过修改 pydoc 的源代码)来实现你想要的行为。只需遍历类的字典以获取本地定义的属性,然后查找具有doc作为属性的东西。

于 2010-08-12T01:25:36.837 回答