隐式调用中,传参都需要关键字参数
但有时候写成params={‘a’:1,‘b’: 2}
fun(params)
有时候写成fun(params=params)
def __getattr__(self, name): # 当访问object不存在的属性时会调用该方法,即没有明确定义函数时,去method中寻找隐性调用方法
def wrapper(*args, **kwargs):
# 隐式调用全部使用kwargs
# 处理传来的非关键字参数,直接写params,没写params=params
if len(args) > 0: # 处理直接写params
for arg in args: # args是元祖
if isinstance(arg, dict) is not True:
print('隐式调用参数有误,非关键字参数')
kwargs = {**kwargs, **arg} # 合并字典
if len(kwargs) > 0: # 有两种情况,一种是直接params=params 一种是关键字直接写比如instId=BTC-USDT
for i in kwargs.keys():
if isinstance(kwargs[i], dict): # 如果关键字传参,参数本身就是字典情况处理
kwargs = {**kwargs, **kwargs[i]}.pop(i) # 处理params=params, value中字典放到kwarg,删除params这个item
# 如果调用方法名称中,不包含async(非异步),用act函数
return self.act(*args, **kwargs) if name.find('async') < 0 else self.asyncact(*args, **kwargs)
return wrapper
463



被折叠的 条评论
为什么被折叠?



