from typing import NamedTuple
class A(NamedTuple):
a: str
b: int
c = 0.432
如何检查a
是否为字符串?
我已经尝试过:
>> type(A.a)
property
使用typing.NamedTuple
创建的命名元组类具有一个_field_types
属性,该属性存储将字段名称映射到类型注释的字典:
A._field_types['a']
请记住,这将为您提供注释,这些注释很可能是'str'
(字符串(或List[int]
之类的东西,或者其他与isinstance
检查不兼容的东西。实际上,对注释做任何有用的事情可能比您预期的要难。
你需要一个类的实例。
>>> type(A("foo", 3).a)
<class 'str'>
str
注释是没有运行时含义的类型提示
>>> type(A(1,2).a)
<class 'int'>
所以A.a
没有某种类型的str
是没有意义的;它是一个属性,有一个可以接受任何值的二传手。
在运行时获取类型注释:
>>> A.__annotations__['a']
<class 'str'>