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