Подтвердить что ты не робот

Что означает сообщение "Слишком мало публичных методов"?

Я запускаю pylint на некотором коде и получаю ошибку "Слишком мало публичных методов (0/2)". Что означает это сообщение? pylint docs не помогают:

Используется, когда у класса слишком мало общедоступных методов, поэтому убедитесь, что оно действительно того стоит.

4b9b3361

Ответ 1

Ошибка в основном говорит о том, что классы не предназначены для хранения данных, так как вы в основном рассматриваете класс как словарь. Классы должны иметь по крайней мере несколько методов для работы с данными, которые они хранят.

Если ваш класс выглядит следующим образом:

class MyClass(object):
    def __init__(self, foo, bar):
        self.foo = foo
        self.bar = bar

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

Заметьте, что namedtuple является неизменным, а значения, назначенные при создании, не могут быть изменены позже.

Ответ 2

Если вы расширяете класс, то мое предложение состоит в том, чтобы систематически отключать это предупреждение и двигаться дальше, например, в случае задач Celery:

class MyTask(celery.Task):  # pylint: disable=too-few-public-methods                                                                                   
    """base for My Celery tasks with common behaviors; extends celery.Task

    ...             

Даже если вы только расширяете одну функцию, вам определенно нужен класс, чтобы сделать эту техническую функцию, и расширение определенно лучше, чем взломать сторонние классы!