unnecessary-nested-literal (RUF041)
有时提供修复。
作用
检查不必要的嵌套 Literal
。
为什么这不好?
最好使用单个 Literal
,它既等效又更简洁。
作为 [PEP 586] 中提出的符合人体工程学的功能,支持通过其他字面量参数化字面量,以实现诸如以下模式:
ReadOnlyMode = Literal["r", "r+"]
WriteAndTruncateMode = Literal["w", "w+", "wt", "w+t"]
WriteNoTruncateMode = Literal["r+", "r+t"]
AppendMode = Literal["a", "a+", "at", "a+t"]
AllModes = Literal[ReadOnlyMode, WriteAndTruncateMode,
WriteNoTruncateMode, AppendMode]
因此,类型检查器也支持字面量的嵌套,这不如扁平化的 Literal
可读性好
AllModes = Literal[Literal["r", "r+"], Literal["w", "w+", "wt", "w+t"],
Literal["r+", "r+t"], Literal["a", "a+", "at", "a+t"]]
示例
AllModes = Literal[
Literal["r", "r+"],
Literal["w", "w+", "wt", "w+t"],
Literal["r+", "r+t"],
Literal["a", "a+", "at", "a+t"],
]
建议改为
或者像第一个示例中那样将字面量赋值给变量。
修复安全性
当 Literal
切片跨越多行且某些行有尾部注释时,此规则的修复被标记为不安全。