當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。