|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
假设我有一个函数recvComm(里面是什么不用管,反正只需要知道函数最后出去一个data就行)
- def recvComm(obj, BUFFSIZE):
- lenth = struct.unpack('i', obj.recv(4))[0]
- data = json.loads(script.recvData(obj, BUFFSIZE, lenth), encoding='utf8')
- return data
复制代码
我想要让这个函数每次运行都把结果记录日志,于是写了个装饰器
- def recordCommLog(DBobject):
- def outer(func):
- def inner(*args):
- res = func(*args)
- DBobject.loggerSave(res)
- return res
- return inner
- return outer
复制代码
加到一起是这样
- @recordCommLog(DBobject)
- def recvComm(obj, BUFFSIZE):
- lenth = struct.unpack('i', obj.recv(4))[0]
- data = json.loads(script.recvData(obj, BUFFSIZE, lenth), encoding='utf8')
- return data
复制代码
但现在有个问题,这个装饰器的参数DBobject是个数据库类对象(数据库的操作都放到数据库类里面执行,这个DBobject是这个类的一个实例),并且上面这个函数包括装饰器是在主逻辑文件下面的一个模块里面(被当做一个模块导入主逻辑),而且这个DBobject是在主逻辑程序下面实例化的,所以需要作为参数导入到函数里。
小弟废柴,查遍了baidu也没查到这种情况应该怎么做(都是把装饰器参数当做flag来使用的),求教大佬这种情况下,怎么写才能把参数传进装饰器里?
|
|