记录一下
Topic sourceif item == 'users': # item 暂时我还不能动态判断是否是方法或者属性,只能写死判断
return lambda value: Chain('%s/%s/%s' % (self.__path, item, value))
这段 lambda 表达式 没看懂,这个value 是怎么传入进来??
这里不是传value进来,而是返回一个函数。具体可以返回__getattr__看。
我们将返回的函数名称为func,函数逻辑是:
def func(value):
return Chain('%s/%s/:%s' % ('status','user',value)
# Chain('%s/%s/:%s' %(self._path,path,value))
至于这里我直接将self._path和path的值写出来是为了方便看,具体为什么请返回看返回函数节的闭包内容。
而Chain().status.user等同于func,那么Chain().status.user('Mike')就等同于func('Mike')了。调用函数,返回Chain的一个实例,继续处理后面的内容。
- 1
XHS_12302
通过:1,定义users方法,2 __getattr__()可以返回方法,3 使用__call__() 等方式来完成链式调用