报告 Python 类模式和 __match_args__ 定义中结构模式匹配使用不正确或不明确的情况。

该检查可以帮助您发现以下问题:

对于某些具有内置类的简单 as 模式,该检查还会建议用于简化模式的快速修复。


# 位置模式过多
match p:
    case Point(x, y, z):  # 根据 __match_args__,预期仅为 2 个
        ……

# 位置 + 关键字冲突
match p:
    case Point(x, y, x=0):  # 'x' 已通过位置指定
        ……

# 类没有 __match_args__,但使用了位置模式
class C:
    def __init__(self, a, b):
        self.a = a; self.b = b

match obj:
    case C(1, 2):  # C 不支持位置模式
        ……

# 无效的 __match_args__ 声明
class D:
    __match_args__ = ["a", 42]  # 必须为 tuple[str, ...]

该检查会在可能的情况下提供快速修复,例如添加 __match_args__,移除冗余模式,或简化涉及内置类的某些 as 模式。