未别名的 collections-abc-set-import (PYI025)
源自 flake8-pyi 代码检查器。
有时提供修复。
作用
检查未将 Set
别名为 AbstractSet
的 from collections.abc import Set
导入。
为什么这不好?
collections.abc
中的 Set
类型是类似集合类型的抽象基类。它很容易与内置的 set
混淆,并且与后者并不等价。
为了避免混淆,应在导入时将 Set
别名为 AbstractSet
。 这样可以清楚地表明导入的类型是一个抽象基类,而不是内置的 set
。
示例
建议改为
修复安全性
对于在 .py
模块顶层定义的 Set
导入,此规则的修复被标记为不安全。 顶层符号由模块隐式导出,因此重命名顶层符号可能会破坏导入它的下游模块。
对于 .pyi
文件来说,情况并非如此,其中导入的符号只有在包含在 __all__
中、使用“冗余”的 import foo as foo
别名或通过 *
导入时才会重新导出。 因此,对于 .pyi
文件,此修复在更多情况下被标记为安全。