python - 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 吗?你能告诉我如何正确重构这段代码吗?
解决方案
None
不是类型,它是单例哨兵值。NoneType
是 的类型None
,但它没有暴露,不应该那样使用。None
应该只用is None
. 您还应该使用isinstance
来测试类型:
assert id is None or isinstance(id, (SafeString, int))
另请注意,您不应该在 builtin 之后命名变量,id
这是隐藏 builtin id
。
推荐阅读
- java - 如何回调主节点,以便可以在 javafx 中切换到不同的场景
- automated-tests - 点击注销时赛普拉斯重定向到另一个 url 超时
- jquery - 使用 jquery 将 JSON 附加到表中总是会附加两次数据。不知道如何解决这个问题?
- javascript - 是否可以在包装文本之前设置组件可以水平滚动多远的最大值?
- django - 让 nginx 提供静态文件(django、gunicorn)
- delphi - 为什么 WinHttp 返回错误“需要证书才能完成客户端身份验证”?
- string - 为什么应该返回字符串的类型方法返回'unit -> string'以及如何解决它?
- mysql - node.js knex mysql终端警告错误
- graphql - 在一个 http 请求中多次调用相同的 GraphQL 突变操作
- xamarin - 如何在 CarouselView 中设置每个视图的 BindingContext?