我正在尝试包装我的XMLRPC服务器(Python2.7) 我用的是这个post的代码
这是我的密码:
class XMLRPCWrapperProxy(object):
def __init__(self, wrapped=None):
if wrapped is None:
wrapped = xmlrpclib.ServerProxy('http://xxx.xxx.xxx.xxx:xxxx')
self.tf = wrapped
def __getattr__(self, name):
print "before"
attr = getattr(self.tf, name)
print "after"
return type(self)(attr)
def __call__(self, *args, **kw):
return self.tf(*args, **kw)
server_w = XMLRPCWrapperProxy()
server_w.tf.do_function1()
server_w.tf.do_function2(param1)
server_w.tf.do_function3()
server_w.tf.do_function4(param1)
我想wrap do_fuxntion...
打电话,但由于某些原因,我看不到打印语句,我想我正在包装自我.tf而不是调用方法,你知道我如何扭曲任何方法调用吗?你知道吗
如果要包装
tf
,为什么在测试中调用server_w.tf
? 这让包装变得毫无意义。你知道吗如果您尝试
server_w.do_function1()
,您将看到print语句。 我不明白你想用type(self)(attr)
行实现什么。。。你知道吗我试着
__getattr__
简单地说:这应该正确地返回包装对象的函数。你知道吗
这可能相当明显,但是您看不到print语句,因为
__getattr__
方法从未被调用。如果我正确理解意图,我怀疑您的调用应该省略.tf
部分。因此应改为:相关问题 更多 >
编程相关推荐