跳到内容

private-type-parameter (UP049)

源自 pyupgrade linter。

有时提供修复。

作用

检查在泛型类和函数中是否使用了带有前导下划线的 PEP 695 类型参数。

为什么这不好?

PEP 695 类型参数的作用域已经被限制在它们出现的类或函数中,因此前导下划线只会降低可读性,而没有通常的隐私好处。

但是,对于“sunder” (_T_) 或 “dunder” (__T__) 类型参数名称,不会发出诊断或修复,因为这些不被认为是私有的。

示例

class GenericClass[_T]:
    var: _T


def generic_function[_T](var: _T) -> list[_T]:
    return var[0]

建议改为

class GenericClass[T]:
    var: T


def generic_function[T](var: T) -> list[T]:
    return var[0]

修复可用性

如果去掉下划线的名称会遮蔽内置变量或其他变量,会是一个关键字,或者会是无效的标识符,则修复将不可用。在这种情况下,您可以考虑使用尾部下划线或完全不同的名称来满足 lint 规则。

另请参阅

此规则重命名私有 PEP 695 类型参数,但不将 pre-PEP 695 泛型转换为新格式。请参阅 non-pep695-generic-functionnon-pep695-generic-class 规则,以进行此转换。这些规则不会在更改后删除未使用的类型变量,因此您可能还需要考虑启用 unused-private-type-var 以完成到 PEP 695 泛型的转换。