Я использую Pylint для кодирования (внутри VS Code с Pylint 2.3.1, Astroid 2.2.5, Python 3.6.2).
Поведение можно воспроизвести с помощью следующего фрагмента:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from http import HTTPStatus
print(HTTPStatus.NOT_ACCEPTABLE.phrase)
Распишем этот фрагмент по телефону
$ pylint snippet.py
выдает следующее сообщение об ошибке:
E1101: Instance of 'NOT_ACCEPTABLE' has no 'phrase' member (no-member)
Тем не менее, я думаю, .phrase
является членом данного экземпляра, так как код работает, печатает желаемый результат и ссылка на .phrase
указана в документах . Что приводит к предположению, что сообщение об ошибке является ложноположительным.
Затем я посмотрел параметры конфигурации pylint в его собственной документации и в VS Code docs и сгенерировал файл .pylintrc
, выполнив
pylint --generate-rcfile > .pylintrc
Внутри этого файла конфигурации мне удалось найти следующую строку:
enable=c-extension-no-member
Закомментируя эту строку и, таким образом, отключая проверки c-extension-no-member
, ложное положительное сообщение об ошибке E1101
подавляется. Однако мне все еще интересно, является ли это просто обходным решением или реальным ложным срабатыванием, поскольку оно отключает все проверки c-extension-no-member
и кажется непригодным для общего подхода. Конечно, можно указать конкретные модули, которые будут игнорироваться при выполнении проверок, но я просто хочу узнать причину этого сообщения об ошибке.