Tu nie chodzi o @staticmethod
i @classmethod
! Wiem jak staticmethod
działa. Chcę wiedzieć, jakie są właściwe przypadki użycia dla @staticmethod
funkcji na poziomie modułu.
Przejrzałem to pytanie i wydaje się, że istnieje ogólna zgoda co do tego, że funkcje na poziomie modułu są lepsze niż metody statyczne, ponieważ są bardziej pytoniczne. Zaletą metod statycznych jest bycie związanym z ich klasą, co może mieć sens, jeśli tylko ta klasa z nich korzysta. Jednak w Pythonie funkcjonalność jest zwykle uporządkowana według modułu, a nie klasy, więc zwykle czyniąc to funkcją modułu, również ma sens.
Metody statyczne można również zastąpić podklasami, co jest zaletą lub wadą w zależności od tego, jak na to patrzysz. Chociaż metody statyczne są zwykle „funkcjonalnie czyste”, więc przesłonięcie może nie być mądre, ale czasami może być wygodne (chociaż może to być jedna z tych „wygodnych, ale NIGDY NIE TO” rzeczy, których tylko doświadczenie może cię nauczyć).
Czy istnieją jakieś ogólne zasady dotyczące używania funkcji staticmethod lub funkcji na poziomie modułu? Jakie mają konkretne zalety lub wady (np. Przyszłe rozszerzenie, rozszerzenie zewnętrzne, czytelność)? Jeśli to możliwe, podaj także przykładowy przypadek.