Python pydoc/help()是否可以隐藏继承类方法和属性的文档?

Python pydoc/help()是否可以隐藏继承类方法和属性的文档?,python,class,documentation,pydoc,Python,Class,Documentation,Pydoc,声明从特定类继承的类时: class C(dict): added_attribute = 0 类C的文档列出了dict的所有方法(通过help(C)或pydoc) 有没有办法从自动生成的文档中隐藏继承的方法(对于非重写方法,文档字符串可以引用基类)?还是不可能 这将非常有用:pydoc在模块的类之后列出模块中定义的函数。因此,当类有很长的文档时,在呈现模块提供的新函数之前,会打印出许多不太有用的信息,这使得文档更难利用(您必须跳过继承方法的所有文档,直到达到所记录模块的特定内容为止)

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

class C(dict):
    added_attribute = 0
C
的文档列出了
dict
的所有方法(通过
help(C)
pydoc

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


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

pydoc
帮助
内置不支持这一点,但是没有理由不能编写自己的工具(可能通过修改pydoc的源代码)来实现所需的行为。只需遍历类的dict即可获得本地定义的属性,然后查找将doc作为属性的对象。

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

注:

  • 这也会影响
    dir()
    的行为
  • 在极少数情况下,已知使用元类可以打开通往地狱维度的门户

我也遇到了同样的问题,在Python2.7.6 for Windows(x86)上通过向pydoc.py添加3行代码解决了这个问题。说明:

  • 制作您自己的Lib\pydoc.py副本
  • 在文件中查找继承的
    变量的所有出现次数
    (3次,按我的计数),并在定义后将其设置为空列表。例如,我得到了第809行:

    attrs,inherited=\u split\u list(attrs,lambda t:t[2]是这个类)

  • 并在其下方的新行中写入
    inherited=[]


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

    谢谢。我只是想知道用户是否可以通过调整模块直接获得更有用的pydoc文档。很高兴知道pydoc和help()在这方面是有限的。感谢您提到这一点。我试着按照您的建议去做(通过改编中的示例),但是当pydoc行为改变时,没有显示任何属性。如果您能提供一些代码,那就太好了。:)