Ты не совсем понял их назначение.
В python у тебя есть атрибуты класса и атрибуты экземпляра класса. Атрибутами называют как методы так и атрибуты в обычном смысле.
1.
Методы экземпляра класса, имеют доступ, и могут изменять, как атрибуты класса, так и атрибуты экземпляра класса.
2.
Методы класса не имеют доступа к атрибутам экземпляра класса, как следствие не могут изменять его состояние.
3.
Статические методы не имеют доступа к атрибутам, экземпляра класса или объекта класса. Обычная функция которая "привязана к классу" для внутренних нужд.
Если говорить о применении методов класса, то самое основное это создание альтернативного конструктора.
class MyClass:
def __init__(self, items):
self.items = items
initial_total_value = self.total()
def total(self):
return sum(self.items)
@classmethod
def from_str(cls, string):
return cls([int(i) for i in string])
a = MyClass([1,2,3])
print(a.total())
b = MyClass.from_str('123')
print(b.total())
То есть смотри мой класс метод возвращает изменный объект класса, на котором без проблем сработает конструктор экземпляра класса.