【发布时间】:2019-12-18 12:42:13
【问题描述】:
当迭代异构序列时(例如,包含T1 和T2 类型的元素),mypy 推断目标变量的类型为object(或T1 和T2 之间共享的另一个基本类型, 例如float 如果元素是1 和1.2):
xs = [1, "1"]
for x in xs:
reveal_type(x) # note: Revealed type is 'builtins.object*'
推断类型为Union[T1, T2] 不是更有意义吗?然后,如果T1 和T2 都具有公共基类所缺少的一些公共属性,则允许循环体访问该属性,而不会刺激强制转换或 isinstance 断言。
为什么 mypy 在这里推断单个共享基类型而不是 Union?
【问题讨论】:
标签: python python-3.x types type-inference mypy