Я имею класс Python и выполнил pylint против него. Одно сообщение, которое это дало, было:
Warning: Method could be a function
Это говорит мне, что было бы лучше переместить этот метод из класса, потому что это не использует переменных экземпляра?
В C# я сделал бы это статическим методом. Что большая часть pythonic вещи состоит в том, чтобы сделать здесь?
Перемещение его в функцию является обычным делом, если оно вообще не затрагивает класс.
Если он манипулирует атрибутами класса, используйте декоратор classmethod
:
@classmethod
def spam(cls, ...):
# cls is the class, you can use it to get class attributes
classmethod
и staticmethod
(который аналогичен предыдущему, за исключением того, что метод не t получить ссылку на класс из его первого параметра) были введены совсем недавно.
Это означает, что некоторые программисты Python избегают статических методов и методов класса.
Некоторые заядлые программисты на Python скажут вам, что эти декораторы просто усложняют ситуацию; некоторые другие люди (обычно бывшие программисты на C # или Java) скажут вам, что использование функции недостаточно объектно-ориентировано. Я думаю, что это просто вопрос предпочтений.