Class methods are for when you need to have methods that aren’t specific to any particular instance, but still involve the class in some way. The most interesting thing about them is that they can be overridden by subclasses, something that’s simply not possible in Java’s static methods or Python’s module-level functions.
If you have a class
MyClass, and a module-level function that operates on MyClass (factory, dependency injection stub, etc), make it a
classmethod. Then it’ll be available to subclasses.