Ошибка «E271: не сравнивать типы, используйте isinstance ()» - PullRequest
0 голосов
/ 19 сентября 2018

Линтеру Python PEP 8 не нравится это:

assert type(a) == type(b)

Он говорит мне использовать вместо этого "isinstance ()".Но для использования isinstance мне нужно было бы сделать что-то вроде

assert isinstance(a, type(b)) and isinstance(b, type(a))

, что кажется гораздо более скучным, и я не вижу смысла в этом.

Является ли линтер мудрым вкакой-то путь, который я не вижу?Или я каким-то образом мудрый, что линтер не видит?

1 Ответ

0 голосов
/ 19 сентября 2018

Из контекста, добавленного в комментариях:

в соответствии с логикой моей программы, на этом этапе в коде должно быть type(a) == type(b), и я просто хочу заявить, что, чтобы увидеть, что всеработает гладко

В этом контексте вам следует просто игнорировать линтер, потому что он не предлагает ничего полезного для вас.E271 предназначался для предупреждения людей о проблемах с помощью проверок типа, таких как:

if type(a) == A:
    ...

В приведенном выше примере может случайно возникать ошибка логического потока, игнорируя возможность того, что a является экземпляромподкласс A.

...