现在需要做一个代理对象,其他人调用该对象方法时,代理hook到其调用,可进行处理,再将方法调用和参数转发给被代理对象,这个被代理对象可能只是另一个实例,可能在另一个进程里,也可能在另一台电脑上。直接给代理对象增加一堆被代理对象的接口即可,但是有没有通用的代理对象能适应任意函数调用呢?
# -*- coding:utf-8 -*-
class CallInfo(object):
'''封装一次函数调用信息。'''
def __init__(self, obj_name, func_name, *args, **kawrgs):
'''调用是这样的:
obj_name.func_name(*args, **kwargs)
'''
self.obj = obj_name
self.func = func_name
self.args = args
self.kwargs = kawrgs
def __str__(self):
return "obj=%s, func=%s, args=%s, kwargs=%s" % (self.obj, self.func, self.args, self.kwargs)
class FuncProxy(object):
def __init__(self, target_name, call_info_processor):
self.__target_name