断言 isinstance 不能按预期使用集合类型
assert isinstance doesn't work as expected with collection types
我写了这段代码:
def func(collection_type):
assert isinstance(collection_type,(list,set))
然后我写道:
func(collection_type=set)
我得到了 AssertionError
assert isinstance(collection_type,(list,set))
。这将测试给定的 instances 是否属于 (list,set)
。所以尝试使用列表实例或像这样设置,
func(collection_type=[1, 2, 3])
或 func(collection_type={1, 2, 3})
.
在 python 中,所有 class 都是 type
class 的实例。因此,如果您像 func(collection_type=set)
一样传递 class 本身。它将检查 type
,因为只有 (list,set)
在那里,它会引发 assertionError。
如果你想用空集测试,试试func(collection_type=set())
我写了这段代码:
def func(collection_type):
assert isinstance(collection_type,(list,set))
然后我写道:
func(collection_type=set)
我得到了 AssertionError
assert isinstance(collection_type,(list,set))
。这将测试给定的 instances 是否属于 (list,set)
。所以尝试使用列表实例或像这样设置,
func(collection_type=[1, 2, 3])
或 func(collection_type={1, 2, 3})
.
在 python 中,所有 class 都是 type
class 的实例。因此,如果您像 func(collection_type=set)
一样传递 class 本身。它将检查 type
,因为只有 (list,set)
在那里,它会引发 assertionError。
如果你想用空集测试,试试func(collection_type=set())