gpt4 book ai didi

python - 具有默认选项的数据类参数选择

转载 作者:行者123 更新时间:2023-12-04 14:45:10 25 4
gpt4 key购买 nike

我正在创建一个带有字段的数据类,我希望只有几个可能的值。我在想这样的事情:

@dataclass
class Person:
name: str = field(default='Eric', choices=['Eric', 'John', 'Graham', 'Terry'])

我知道一种解决方案是验证 __post_init__ 中的参数方法,但是否有使用类似上述语法的更简洁的方法?

最佳答案

python 3.8 引入了一种名为 Literal 的新类型可以在这里使用:

from dataclasses import dataclass
from typing import Literal

@dataclass
class Person:
name: Literal['Eric', 'John', 'Graham', 'Terry'] = 'Eric'

键入检查器,如 mypy正确解释它没有问题, Person('John')获得通过,和 Person('Marc')被标记为不兼容。请注意,这种提示需要类型检查器才能有用,当您只是运行代码时,它不会自行执行任何操作。

如果您使用的是较旧的 python 版本并且无法升级到 3.8,您还可以访问 Literal通过官方 pip-installable backport 包输入 typing-extensions ,然后使用 from typing_extensions import Literal 导入它反而。

如果您需要在运行时对传递的值进行实际检查,您应该考虑使用 pydantic 来定义你的数据类。它的主要目标是使用强大的验证引擎扩展类似数据类的结构,该引擎将检查类型提示以强制执行它们,即您考虑在 __post_init__ 中手动编写的内容。 .

关于python - 具有默认选项的数据类参数选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61756716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com