gpt4 book ai didi

python - 如何验证 namedtuple 值?

转载 作者:太空狗 更新时间:2023-10-30 02:51:11 24 4
gpt4 key购买 nike

我有 namedtuple 变量,它代表应用程序的版本(它的编号和类型)。但我想要对值(value)观进行一些限制:

Version = namedtuple("Version", ["app_type", "number"])
version = Version("desktop") # i want only "desktop" and "web" are valid app types
version = Version("deskpop") # i want to protect from such mistakes

我现在的解决方案是没有方法的原始类:

class Version:
def __init__(self, app_type, number):
assert app_type in ('desktop', 'web')

self.app_type = app_type
self.number = number

它是 python 式的吗?是不是太过分了?

最佳答案

您可以使用 enum.Enumtyping.NamedTuple 而不是 collections.namedtuple:

也许是这样的:

from typing import NamedTuple
import enum

class AppType(enum.Enum):
desktop = 0
web = 1

class Version(NamedTuple):
app: AppType


v0 = Version(app=AppType.desktop)
v1 = Version(app=AppType.web)

print(v0, v1)

输出:

Version(app=<AppType.desktop: 0>) Version(app=<AppType.web: 1>)

未定义的 AppType 引发了 AttributeError:

v2 = Version(app=AppType.deskpoop)

输出:

AttributeError: deskpoop

关于python - 如何验证 namedtuple 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56780005/

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