我有很多的可调用的对象,他们都填写正确的__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" '

希望这有助于

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top