当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python ast.MatchClass用法及代码示例


用法:

class ast.MatchClass(cls, patterns, kwd_attrs, kwd_patterns)

匹配类模式。 cls 是一个表达式,给出了要匹配的名义类。 patterns 是要与类定义的模式匹配属性序列匹配的模式节点序列。 kwd_attrs 是要匹配的附加属性序列(在类模式中指定为关键字参数),kwd_patterns 是相应的模式(在类模式中指定为关键字值)。

如果主题是指定类的实例,则此模式成功,所有位置模式都匹配相应的class-defined 属性,并且任何指定的关键字属性都匹配其相应的模式。

注意:类可以定义一个返回 self 的属性,以便将模式节点与正在匹配的实例进行匹配。几种内置类型也以这种方式匹配,如 match 语句文档中所述。

>>> print(ast.dump(ast.parse("""
... match x:
...     case Point2D(0, 0):
...         ...
...     case Point3D(x=0, y=0, z=0):
...         ...
... """), indent=4))
Module(
    body=[
        Match(
            subject=Name(id='x', ctx=Load()),
            cases=[
                match_case(
                    pattern=MatchClass(
                        cls=Name(id='Point2D', ctx=Load()),
                        patterns=[
                            MatchValue(
                                value=Constant(value=0)),
                            MatchValue(
                                value=Constant(value=0))],
                        kwd_attrs=[],
                        kwd_patterns=[]),
                    body=[
                        Expr(
                            value=Constant(value=Ellipsis))]),
                match_case(
                    pattern=MatchClass(
                        cls=Name(id='Point3D', ctx=Load()),
                        patterns=[],
                        kwd_attrs=[
                            'x',
                            'y',
                            'z'],
                        kwd_patterns=[
                            MatchValue(
                                value=Constant(value=0)),
                            MatchValue(
                                value=Constant(value=0)),
                            MatchValue(
                                value=Constant(value=0))]),
                    body=[
                        Expr(
                            value=Constant(value=Ellipsis))])])],
    type_ignores=[])

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 ast.MatchClass。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。