我正在玩一下新的类型提示/类型模块,使用Python3.5尝试找到一种确认暗示类型是否等于变量实际类型的方法,并发现了一些令我相当惊讶的东西。
>>> from typing import List
>>> someList = [1, 2, 3]
>>> isinstance(someList, List[str])
True
在继续寻找比较变量和它所暗示的类型的方法时,我也尝试了这个:
>>> anotherList = ["foo", "bar"]
>>> type(anotherList) is List[str]
False
有人能解释一下为什么前者计算结果为True
吗?
并且,是否有一种可靠的方法来检查变量的类型是否等于来自typing模块的类型?
type(x) is a
和isinstance(x, a)
绝对不是相同的东西。一个对象可以是许多类型(带有继承层次结构),但type(x)
只给出其最具体的单一类型。 - BrenBarntype(['foo', 'bar']) == List[str]
的求值结果是什么? - Chad S.