哪里Python的是pydoc帮助功能得到它的内容?
-
21-09-2019 - |
题
我有很多的可调用的对象,他们都填写正确的__doc__
字符串,但对他们的帮助下运行基于__doc__
产生他们的类的帮助,而不是帮助。
我想改变它,以便在其上运行帮助生成定制的帮助,看起来基本上像什么,如果他们实际的功能,而不是一个类实现__call__
的情况下,我会得到。
在代码,我想使这个输出:
class myCallable:
def __init__(self, doc):
self.__doc__ = doc
def __call__(self):
# do some stuff
pass
myFunc = myCallable("some doco text")
help(myFunc)
看起来更像这个输出:
def myFunc():
"some doco text"
# do some stuff
pass
help(myFunc)
解决方案
在help
函数(pydoc
模块中实现)不准备找到每个实例文档字符串。我刚刚看了一下,通过该模块,看看是否有办法提供明确的帮助,但似乎没有要。它使用inspect
模块,以确定它是什么样的事情,和你的myFunc的看起来并不像一个函数,它看起来像一个实例。所以是pydoc打印帮助有关实例的类来代替。
这会是很好,如果类似__doc__
您可以添加一个__help__
属性,但有一个为不支持。
我毫不犹豫地建议,但你最好的选择可能是定义一个新的help
功能:
old_help = help
def help(thing):
if hasattr(thing, '__help__'):
print thing.__help__
else:
old_help(thing)
和再放入__help__
属性上的情况下:
class myCallable:
def __init__(self, doc):
self.__doc__ = doc
self.__help__ = doc
其他提示
我不是很清楚你的问题到底是什么。我的理解是,你有一个类,并在它定义的函数,你想知道的Python获取从该功能的帮助文本。
的Python获取从在类/方法提供的文档字符串的帮助文本。
如果您有该类中的“A”级和方法“F”,并有在函数“f”文档字符串,那么下面的终端转储应该帮助清除你的问题:
>>> class A:
def __init__(self):
self.c = 0 # some class variable
def f(self, x):
"""this is the documentation/help text for the function "f" """
return x+1
>>> help(A.f)
Help on method f in module __main__:
f(self, x) unbound __main__.A method
this is the documentation/help text for the function "f"
>>> A.f.__doc__
'this is the documentation/help text for the function "f" '
希望这有助于
不隶属于 StackOverflow