【发布时间】:2021-08-05 21:46:15
【问题描述】:
一方面,我了解到可以是int 或float 的数字应该被类型注释为float(来源:PEP 484 Type Hints 和this stackoverflow question):
def add(a: float, b: float):
return a + b
另一方面,int 不是float 的实例:
-
issubclass(int, float)返回False -
isinstance(42, float)返回False
因此,我希望 Union[int, float] 是此用例的正确注释。
问题:
- 这种反直觉行为的原因是什么?类型提示是否遵循与类比较不同的机制(例如在某些情况下是“无损转换”规则等)?
-
int/float是类型注释中的特例吗?还有其他类似的例子吗? - 如果这是非预期用途,是否有任何 linter 会警告我有关
Union[float, int]的信息?
【问题讨论】:
标签: python unions type-hinting