python-3.x - 尝试将从列表中解包的字典传递给 __init__ 方法时出现 TyperError
问题描述
我正在尝试从列表中解压缩 dict 并将其传递给类的 __init__ 方法。但是某处有一个 TypeError,我无法解决。我只传递一个长度为 13 的字典(检查 type() 和 len() 输出)。
Python 3.7.2,Windows 10。
packed:
[{
'external_ids': {},
'play_offset_ms': 9340,
'genres': [{'name': 'Alternative'}],
'external_metadata': {},
'label': 'Vagrant Records',
'release_date': '2018-10-11',
'artists': [{'name': 'LP'}],
'title': 'Recovery',
'duration_ms': 234620,
'album': {'name': 'Recovery'},
'acrid': '12655602970c4b9fecd46fd946f2b3d8',
'result_from': 3,
'score': 100
}]
...
if not status:
packed = meta['metadata']['music']
self.meta = Meta(*packed)
print(*packed, type(*packed), len(*packed))
else:
print(error_codes[status])
class Meta:
def __init__(self, meta):
pass
Output:
{'external_ids': {}, 'play_offset_ms': 9340, 'genres': [{'name': 'Alternative'}], 'external_metadata': {}, 'label': 'Vagrant Records', 'release_date': '2018-10-11', 'artists': [{'name': 'LP'}], 'title': 'Recovery', 'duration_ms': 234620, 'album': {'name': 'Recovery'}, 'acrid': '12655602970c4b9fecd46fd946f2b3d8', 'result_from': 3, 'score': 100} <class 'dict'> 13
Traceback (most recent call last):
File "C:/Users/Ledor/Documents/PycharmProjects/Tbot/objects.py", line 215, in <module>
a1.recognize()
File "C:/Users/Ledor/Documents/PycharmProjects/Tbot/objects.py", line 109, in recognize
self.meta = Meta(*packed)
TypeError: __init__() takes 2 positional arguments but 6 were given
解决方案
推荐阅读
- android - Does AudioTrack need to be assigned the same AudioSessionId as AudioRecord when using AcousticEchoCanceler?
- rest - 从 API 管理计划的数据工厂复制活动的刷新令牌
- r - Tbl没有将2个相同的字符串分组
- android - KeyboardAvoidingView 在 apk 文件中不起作用-React Native
- javascript - 如何修复错误标识符已使用反应和打字稿声明?
- csv - 将数据加载到 ibm db2 云数据库。授权问题
- javascript - React.createElement:类型无效 - 需要一个字符串但未定义
- npm - 使用 Sqlite3 的电子应用程序 - 致命错误:错误::错误 napi_create_reference
- laravel - 在新的 Laravel 安装上运行 NPM 运行开发时出现问题
- python - 在python中,对象没有按照定义的顺序打印