如何在Python中强制命名元组的变量类型?

3
我在学习使用带有变量类型规定的命名元组,并参考了这篇教程。但是,我修改了下面的代码,在输入错误类型的值时,没有出现任何错误信息或程序中断。虽然可以编写自己的try/except语句来引发错误异常,但是否有现成的解决方案/语法来强制用户输入正确类型的变量呢?
from typing import NamedTuple

class Pet(NamedTuple):
    pet_name: str
    pet_type: str

    def __repr__(self):
        return f"{self.pet_name}, {self.pet_type}"

cleons_pet = Pet('Cotton', 'owl')
print('cleons_pet: ', cleons_pet)

cleons_pet_v2 = Pet(222, 1)
print('cleons_pet_v2: ', cleons_pet_v2)

# Output
cleons_pet:  Cotton, owl
cleons_pet_v2:  222, 1
[Finished in 0.1s]
1个回答

3

在Python中,类型提示不会被Python本身评估!请参见PEP484

尽管这些注释可以通过通常的注释属性在运行时获得,但是在运行时不进行类型检查。相反,该提案假定存在一个单独的离线类型检查器,用户可以自愿地对其源代码运行。

至少有两个项目提供离线类型检查(mypypyre)。如果您在项目中使用类型提示,则应该绝对使用它们。

如果您想在运行应用程序时验证输入,您必须通过自己验证数据来说服离线类型检查器,或使用第三方库。我知道 attrs,您可以使用 验证器类型注释 进行在线验证。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接