覆盖Python help()函数行为

时间:2018-01-28 21:32:53

标签: python

我创建了一个调用远程对象上的方法的Python代理类。我已使用闭包来覆盖动态创建的方法的 doc 属性,以便

help(obj.method)

给了我远程对象方法的帮助。然后我决定我想对对象属性做同样的事情。我班上有类似的东西:

class Proxy:
    def __getattr__(self, name):
        # Do stuff to get remote attribute

现在调用这样的代码:

help(obj.attribute)

我当然得到查询值类型的文档字符串(字符串,int或者返回的任何内容)。

我能想到避免这种情况的唯一方法是在__getattr__()内获取堆栈转储,识别并查找help()调用,并有条件地返回对象/类而不是远程查询的值。 这显然是不理想的,因为有很多方法可以指定相同的东西,但是它可以帮助我从命令行,这是我最有可能使用它的地方,所以也许总比没有好。

有更好的方法吗?

0 个答案:

没有答案