首页 > 解决方案 > 检查特定python模块的实例

问题描述

在为我的 API 编写测试时,我发现我不太明白这一点。

r是来自 API 调用的响应。

为什么会这样True

isinstance(r, requests.Response)

为什么会这样False

isinstance(r.__class__, requests.models.Response)

鉴于

r.__class__ == requests.models.Response

标签: pythonrequest

解决方案


isinstance(r, requests.Response)检查是否r是一个Response或子类,它显然是。

isinstance(r.__class__, requests.models.Response)检查是否Response是 a Response,显然不是:Responseis a type

您对第二次检查的意思可能是issubclass(type(r), requests.model.Response). 就个人而言,我更喜欢在这些情况下使用typeto __class__,主要是因为我有一种非理性的恐惧,害怕__class__以某种方式被错误的事物束缚,或者无法使用。


推荐阅读