-
Notifications
You must be signed in to change notification settings - Fork 116
0x03 数据格式
ZaxTyson edited this page Mar 3, 2020
·
1 revision
以前 API 返回的数据格式为 dict
和 list
,调用后需要使用大量 [''] 取值,使用不便;从 list
中获取特定元素也很麻烦。所以 v2.4.0
开始,接口返回的数据格式发生了变化。
-
dict
变为namedtuple
,key 与之前一致,只是访问方式发生变化: 由 result['x']['y'] 变为 result.x.y -
list
变为ItemList
,处理数据时更加方便。可作为list
使用,同时支持其它方法操作元素。
以前返回文件夹信息:
{'name': 'abc', 'id': 123, 'has_pwd': True, 'desc': 'xxxx'}
现在返回:
Folder(name='abc', id=123, has_pwd=True, desc='xxxx')
通过 Obj.attr 方式访问,简化代码中的 ['']
所有 namedtuple 定义见: lanzou.api.types
存放 namedtuple 的容器,保存的元素至少具有 name 、id 两个属性。
它能够作为 list
使用,同时支持其它方法,以便获取、操作特定元素。
<List Folder(name='github', id=837574, has_pwd=False, desc='Github Download'), Folder(name='share', id=879591, has_pwd=False, desc='文件分享'), Folder(name='Music', id=1387639, has_pwd=False, desc='网易云音乐')>
方法
- ListObj.append(item) 方法在列表末尾插入追加 item
- ListObj.insert(pos, item) 方法在 pos 位置插入元素 item
- ListObj.index(item) 方法获取元素 item 位置
- ListObj.clear() 方法清空列表
- ListObj.filter(func) 方法从列表中筛选出使得 func(item) 为 True 的子列表
- ListObj.find_by_name(name_) 方法返回列表中首个 name 属性为 name_ 的元素
- ListObj.find_by_id(id_) 方法返回列表中 id 属性为 id_ 的元素
- ListObj.pop_by_id(id_) 方法返回列表中 id 属性为 id_ 的元素,同时从列表中删除
- ListObj.update_by_id(id_, **kwargs) 方法更新列表中 id 属性为 id_ 元素的值
属性
- ListObj.all_name 属性是所有元素的 name 组成的 list
- ListObj.name_id 属性是所有元素的 name: id 组成的 dict
继承自 ItemList
,用于保存与文件相关的 namedtuple
继承自 ItemList
,用于保存与文件夹(目录)相关的 namedtuple