我有一个类,我正在使用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()。
如何更新帮助信息,我该怎么做?
答案 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