Проверка экземпляра конкретного модуля Python - PullRequest
0 голосов
/ 29 октября 2018

При написании теста для моего API я обнаружил, что не совсем понимаю.

r является ответом на вызов API.

Почему это True:

isinstance(r, requests.Response)

А почему это False:

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

Учитывая, что

r.__class__ == requests.models.Response

1 Ответ

0 голосов
/ 29 октября 2018

isinstance(r, requests.Response) проверяет, является ли r Response или подклассом, которым он явно является.

isinstance(r.__class__, requests.models.Response) проверяет, является ли Response значением Response, что явно не равно: Response является значением type.

Что вы, вероятно, имели в виду со второй проверкой, это issubclass(type(r), requests.model.Response). Лично я предпочитаю использовать от type до __class__ в этих ситуациях, главным образом потому, что у меня есть иррациональный страх, что __class__ может быть как-то связан с неправильной вещью или недоступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...