首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在子类docstring中隐藏“基类继承的方法”

在子类docstring中隐藏“基类继承的方法”
EN

Stack Overflow用户
提问于 2018-06-04 03:58:52
回答 2查看 148关注 0票数 2

我正在用大量的方法和长的文档字符串对一个类进行子类化。如果我调用IPython help函数,我会看到原始类的所有帮助。我猜这是意料之中的,有什么方法可以抑制它吗?我只想看到我重新定义的方法。

mymodule.py是:

代码语言:javascript
复制
import matplotlib.axes
class MySubclass(matplotlib.axes.Axes):
    pass

如果我在IPython中这样做:

代码语言:javascript
复制
import mymodule
help(mymodule)

打印输出很大,因为它包含所有“从matplotlib.axes._axes.Axes继承的方法:”,这是兆字节的文本,因为它列出了类的所有方法的文档字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-07 22:09:08

正如here所讨论的,一种可能的工作解决方案是手动移除文档

代码语言:javascript
复制
## List the methods from the original class
method_list = [func for func in dir(mymodule.MySubclass) if \ 
  callable(getattr(mymodule.MySubclass, func))]

## Remove doc for methods
for func in method_list:
  ## Change only original user defined methods
  if ("_" not in el[0:2]):
    original_method = getattr(mymodule.MySubclass, func)
    setattr(original_method, "__doc__", "")
  else:
    pass

这可以很容易地封装在装饰器中,并在实例化子类或导入模块时调用。

票数 2
EN

Stack Overflow用户

发布于 2018-06-04 05:09:37

我能想到的唯一方法是,如果您在子类中创建基类中定义的所有函数,并在其中创建您自己的文档字符串,那么它们就可以被覆盖。您甚至可以留下空白文档字符串,无论您喜欢什么,但这将是非常不切实际的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50670470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档