Wiem, co robią i widziałem wiele przykładów obu, ale nie znalazłem ani jednego przykładu, w którym musiałbym użyć classmethod
zamiast zastępowania go staticmethod
.Dlaczego warto używać metody classmethod zamiast staticmethod?
Najczęstszym przykładem classmethod
Widziałem to do tworzenia nowej instancji samej klasy, jak to (bardzo uproszczony przykład, nie ma sensu metody atm ale masz pomysł.):
class Foo:
@classmethod
def create_new(cls):
return cls()
To spowoduje zwrócenie nowej instancji Foo
podczas wywoływania foo = Foo.create_new()
. Teraz dlaczego nie można po prostu użyć tego zamiast:
class Foo:
@staticmethod
def create_new():
return Foo()
Robi dokładnie to samo, dlaczego kiedykolwiek użyć classmethod
nad staticmethod
?
@KevinBrydon nie ma * odpowiedzi * na pytanie OP na tej stronie, ale może być w komentarzach. Nie wiem, czy to wystarczający powód, aby to zamknąć. – jamylak
To pytanie NIE jest duplikatem połączonego pytania. Odpowiedzi na połączone pytanie nie dotyczą: DLACZEGO używałbyś metod klasowych zamiast metod statycznych i na odwrót. – spacetyper