You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查类型是否属于TypeVar的约束类型集合

如何检查类型是否属于TypeVar的约束类型集合

我完全懂你的需求——你定义了带类型约束的TypeVar,想判断某个变量的实际类型是不是在这个TypeVar限定的类型集合里对吧?其实不用找什么复杂的方法,TypeVar对象本身就自带了一个专门存储约束的属性,咱们直接用它就能搞定。

你原来写的print(type(num) in number)之所以行不通,是因为number是一个TypeVar实例,并不是可迭代的类型集合,直接用in判断会报错。正确的做法是访问它的__constraints__属性,这个属性会返回你定义TypeVar时传入的所有约束类型组成的元组。

咱们直接修改你的代码来演示:

from typing import TypeVar 
number = TypeVar("number", int, float)

num: number = 3.14
# 正确的判断方式
print(type(num) in number.__constraints__)  # 输出 True

# 再测试一个int类型的变量
num2: number = 5
print(type(num2) in number.__constraints__)  # 输出 True

# 测试一个不在约束里的类型,比如字符串
str_var = "test"
print(type(str_var) in number.__constraints__)  # 输出 False

简单解释一下:当你用TypeVar("number", int, float)这种方式定义带约束的TypeVar时,number.__constraints__就会等于(int, float),所以直接用type(num)和这个元组做成员判断就可以了。

如果你的TypeVar是用bound参数来指定约束的(比如TypeVar("number", bound=Real)),那__constraints__属性会是一个只包含bound类型的元组,同样可以用这个方法来判断类型是否符合约束哦。

备注:内容来源于stack exchange,提问作者sina kasesaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:50:27