Как исправить предупреждение pylint «Абстрактный класс не указан»?

16

У меня есть класс Python, который вызывает «NotImplementedError» для нескольких методов, и класс наследуется несколькими другими классами, которые определены в их собственных файлах.

Когда я запускаю Pylint в файле с абстрактным классом, он всегда жалуется на «Абстрактный класс, на который не ссылаются». Мне было интересно, просто ли это Пилинт параноик или есть что-то, что мне нужно исправить?

    
задан Jack Z 24.11.2011 в 20:04
источник
  • Трудно сказать, не видя какого-то кода –  César 24.11.2011 в 20:09

2 ответа

24

Если у вас в вашем классе метод, повышающий NotImplementedError , достаточно, чтобы заставить pylint считать, что это абстрактный класс.

Как pylint проверяет каждый файл, выделенный из остальной части проекта, если никто не наследует от этого класса в файле, он поднимет это сообщение.

Если вы хотите деактивировать его, вам нужно поставить этот комментарий перед определением вашего класса:

#pylint: disable=R0921
    
ответ дан Cédric Julien 24.11.2011 в 20:21
  • Большое спасибо за вашу помощь! - Разъем –  Jack Z 24.11.2011 в 20:37
  • Лучше всего настроить весь модуль в целом вместо отключения R0921, за исключением того, что ваш модуль действительно представляет собой библиотеку, которая фактически предоставляет абстрактный класс. (Но тогда у вас должны быть хотя бы тесты, которые подклассифицируют его.) –  Attila O. 17.07.2013 в 17:08
6

Pylint считает каждый файл «самодостаточным», поэтому при проверке файла, в котором вы определили свой абстрактный класс, но не подклассов, он жалуется на R0921 (http://www.logilab.org/card/pylintfeatures).

Фактически, тип сообщения - «R», что означает «refactor» (http://www.logilab.org/card/pylint_manual#pylint-output): Pylint предлагает «хорошую практику», но вы может с радостью оставить его таким.

    
ответ дан lbolla 24.11.2011 в 20:13
  • Большое спасибо за вашу помощь! –  Jack Z 24.11.2011 в 20:39