我创建了一个调用远程对象上的方法的Python代理类。我已使用闭包来覆盖动态创建的方法的 doc 属性,以便
help(obj.method)
给了我远程对象方法的帮助。然后我决定我想对对象属性做同样的事情。我班上有类似的东西:
class Proxy:
def __getattr__(self, name):
# Do stuff to get remote attribute
现在调用这样的代码:
help(obj.attribute)
我当然得到查询值类型的文档字符串(字符串,int或者返回的任何内容)。
我能想到避免这种情况的唯一方法是在__getattr__()
内获取堆栈转储,识别并查找help()调用,并有条件地返回对象/类而不是远程查询的值。
这显然是不理想的,因为有很多方法可以指定相同的东西,但是它可以帮助我从命令行,这是我最有可能使用它的地方,所以也许总比没有好。
有更好的方法吗?