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