首页 > 解决方案 > Assetion:如何在其他可能的类型中断言 None

问题描述

蟒蛇 3.8

这是一个追溯。Django Web 框架显示了这一点。但这没关系。代码是可见的,变量的值也是可见的。

assert type(id) in [SafeString, None, int]

▼ Local vars
height  100
id  None
img <SvgImage: 3: Github logo>
width 100

你能告诉我为什么代码会出现 AssertionError 吗?你能告诉我如何正确重构这段代码吗?

标签: python

解决方案


None不是类型,它是单例哨兵值。NoneType是 的类型None,但它没有暴露,不应该那样使用。None应该只用is None. 您还应该使用isinstance来测试类型:

assert id is None or isinstance(id, (SafeString, int))

另请注意,您不应该在 builtin 之后命名变量,id这是隐藏 builtin id


推荐阅读