Python中set()的类型是什么?

时间:2016-05-19 09:02:06

标签: python python-2.7 types set

a = ['a', 'b', 'c', 'd']
b = set(a)
print isinstance(a, types.ListType)
print isinstance(b, types.ListType)

结果显示b不是types.ListType。但是,Python中没有“SetType”。那么什么是'XXXType'类型,以便isinstance(b,types.XXXType)为True?

1 个答案:

答案 0 :(得分:9)

使用isinstance(b, set)

对于内置类型的types引用只是为了方便 * 而被弃用(它们已从Python 3.x version of the types module中删除)。因此从未添加set

例如,types.ListType只是list的别名:

>>> import types
>>> types.ListType is list
True
>>> isinstance([1, 2, 3], list)
True

如果必须SetType模块中有types引用,只需自行添加别名:

types.SetType = set

如果您要为基本容器类型寻找抽象基类,请使用collections module ABCs;这些信号表示方法类型支持,并且检查这些类型可以让您检测支持特定操作的更广泛的类型集(而不仅仅是list和{{1的实例类型):

set

* 历史课:曾几何时,像>>> from collections import Set, MutableSequence >>> isinstance([1, 2, 3], MutableSequence) True >>> isinstance({1, 2, 3}, Set) True int这样的内置类型并不是真正的类,而且内置名称listint()只是函数转换为内置类型。这意味着名称与list()types.IntType不是同一个对象,并且 使用types.ListType模块可以使用{{1在列表对象上。那个时间现在已经很久了,远远落后于我们,types模块的作用发生了变化。

相关问题