我有一个不同类型的字典,在我的代码中,在通过循环读取字典时,根据它的类型,我有不同的操作。该代码按预期工作,但 MYPY 抱怨它不正确。这是示例代码:
COL = {
"ABC": [
"col1",
"col2",
"col3",
],
"BBC": [
"col1",
"col2",
"col3",
],
"XYZ": {
"col1": "c1",
"col2": "c2",
"col3": "c3",
},
}
list(COL[table_name].keys()) if isinstance(COL[table_name], dict) else COL[table_name]
Mypy 报错:error: "Collection[str]" has no attribute "values"
看起来没有考虑if条件。
尝试过 COL 的类型注释,但没有成功。
Mypy 报告错误,因为不确定
COL[table_name]
在两次访问中是否相同。
如果引入中间变量,则不会报错:
(游乐场链接)
list(table.keys()) if isinstance(table := COL[table_name], dict) else table # fine
提取一个变量以向 mypy 显示表达式
COL[table_name]
始终引用同一个对象:
col = COL[table_name]
list(col.keys()) if isinstance(col, dict) else col