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

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

У меня есть класс python и запущен pylint против него. Одно его сообщение было:

Warning: Method could be a function

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

В С# я сделаю это статическим методом. Какая самая пифоническая вещь здесь?

4b9b3361

Ответ 1

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

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

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

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

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