我有一个用setattr添加帮助函数的类。这个函数是一个正确创建的instancemethod,工作起来像一个符咒。
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()。
我需要做什么来更新帮助信息?
最佳答案
我有一个具体的原因你这样做复杂的方式?为什么不这样做呢:
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
关于python - 使用setattr添加的属性未显示在help()中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8300808/