Как обработать сообщение pylint: Предупреждение: Метод мог быть функцией

Я имею класс Python и выполнил pylint против него. Одно сообщение, которое это дало, было:

Warning: Method could be a function

Это говорит мне, что было бы лучше переместить этот метод из класса, потому что это не использует переменных экземпляра?

В C# я сделал бы это статическим методом. Что большая часть pythonic вещи состоит в том, чтобы сделать здесь?

56
задан Eric Leschinski 26 October 2015 в 01:47
поделиться

1 ответ

Перемещение его в функцию является обычным делом, если оно вообще не затрагивает класс.

Если он манипулирует атрибутами класса, используйте декоратор classmethod :

@classmethod
def spam(cls, ...):
   # cls is the class, you can use it to get class attributes

classmethod и staticmethod (который аналогичен предыдущему, за исключением того, что метод не t получить ссылку на класс из его первого параметра) были введены совсем недавно. Это означает, что некоторые программисты Python избегают статических методов и методов класса.

Некоторые заядлые программисты на Python скажут вам, что эти декораторы просто усложняют ситуацию; некоторые другие люди (обычно бывшие программисты на C # или Java) скажут вам, что использование функции недостаточно объектно-ориентировано. Я думаю, что это просто вопрос предпочтений.

61
ответ дан 26 November 2019 в 17:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: