小编Dos*_*sod的帖子

如何在数据类中一起使用 match_args 和 kw_args ?

给出以下示例:

from dataclasses import dataclass

@dataclass
class Person:
    name: str = ""


@dataclass(kw_only=True)
class AnotherPerson:
    name: str = ""


print(Person.__match_args__)
print(AnotherPerson.__match_args__)
Run Code Online (Sandbox Code Playgroud)

运行时,您会得到以下信息:

('name',)
()
Run Code Online (Sandbox Code Playgroud)

根据dataclass match_args参数的文档(重点是我的):

match_args:如果为 true(默认为 True),将从生成的 __init__() 方法的参数列表中创建 __match_args__ 元组(即使未生成 __init__(),请参见上文)。如果为 false,或者类中已定义 __match_args__,则不会生成 __match_args__。

鉴于match_args默认值为 true,我认为__match_args__变量应该设置为方法中出现的值__init__,尽管关键字参数的情况似乎并非如此。这只是一个未记录的限制,还是我做错了什么?

__match_args__无论如何,我将如何在不明确写出这些元组的情况下生成它们?

python python-dataclasses python-3.10 structural-pattern-matching

5
推荐指数
1
解决办法
1481
查看次数