Python - Должен ли я помещать свои вспомогательные функции внутри или вне класса?

В Python, если некоторым методам класса нужна вспомогательная функция, но сама вспомогательная функция ничего не использует в классе, я должен помещать вспомогательную функцию внутри или вне класса?

Я попытался поместить его внутрь, но PyLint жаловался, что эту функцию можно было бы поставить вне.

@Karl:

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

Ответы

Ответ 1

Когда вы решаете, где поставить вспомогательные функции, я задаю вопрос: "Это только для этого класса?" Если он может помочь в других местах, то он идет на уровне модуля; если он действительно только для этого класса, то он входит в класс с помощью staticmethod (для выполнения задания не требуется данных класса) или classmethod (использует некоторые данные класса, но не экземпляра, чтобы выполнять свою работу).

Еще одна проверка кода на python pyflakes.

Ответ 2

Возможно, что вспомогательная функция лучше подходит для уровня модуля, а не для класса.

Если вы не согласны с тем, что это так, существует staticmethod decorator, который можно использовать для функций внутри класса. Проще говоря, статический метод ведет себя так же между экземплярами объектов одного и того же класса. Он не полагается на данные экземпляра.

По этой причине декоратор staticmethod отображает поведение функции таким образом, что он не принимает неявный первый аргумент (обычно self), как указано в документации).