使用setattr添加的属性未显示在help()中

时间:2011-11-28 18:56:15

标签: python reflection

我有一个类,我正在使用setattr添加一个帮助功能。该函数是一个正确创建的实例方法,就像一个魅力。

import new
def add_helpfunc(obj):
    def helpfunc(self):
        """Nice readable docstring"""
        #code

    setattr(obj, "helpfunc", 
            new.instancemethod(helpfunc, obj, type(obj)))

但是,在对象实例上调用help时,新方法不会列为对象的成员。我认为帮助(即pydoc)使用了dir(),但是dir()工作而不是help()。

如何更新帮助信息,我该怎么做?

1 个答案:

答案 0 :(得分:2)

我有一个特定的理由你这么复杂吗?为什么不这样做:

def add_helpfunc(obj):
    def helpfunc(self):
        """Nice readable docstring"""
        #code

    obj.helpfunc = helpfunc

如果我没有错误,以这种方式添加方法也可以解决您的帮助问题...

示例:

>>> class A:
...     pass
...
>>> add_helpfunc(A)
>>> help(A.helpfunc)
Help on method helpfunc in module __main__:

helpfunc(self) unbound __main__.A method
    Nice readable docstring

>>> help(A().helpfunc)
Help on method helpfunc in module __main__:

helpfunc(self) method of __main__.A instance
    Nice readable docstring