Cz 4: metody klasowe (@classmethod) i statyczne (@staticmethod)
W Pythonie metody w klasach nie muszą zawsze operować na instancji. Dzięki dekoratorom @classmethod i @staticmethod możemy tworzyć metody, które są wywoływane na poziomie klasy, bez potrzeby posiadania obiektu. To kluczowa różnica w porównaniu z innymi językami OOP, gdzie metody statyczne i klasowe to standard.
Metody klasowe otrzymują referencje do klasy ( cls ), dzięki czemu mogą operować na atrybutach klasowych i wywoływać inne metody klasowe. Są idealne do implementacji wzorca Factory Method (metoda wytwórcza), gdzie jeden konstruktor to za mało. Metody statyczne natomiast to zwykłe funkcje umieszczone w przestrzeni nazw klasy - nie otrzymują ani self , ani cls . Służą do grupowania funkcji pomocniczych, które są logicznie związane z klasą.
Zrozumienie tych trzech typów metod jest kluczowe dla pisania czystego, zgodnego z zasadami OOP kodu. Wybór właściwego typu metody wpływa na czytelność, testowalność i możliwość rozszerzania kodu przez dziedziczenie. W tej części nauczysz się:
- Czym są dekoratory w Pythonie i jak działają pod maską
- Jaka jest różnica między metodą instancji, klasową i statyczną
- Kiedy stosować @classmethod jako alternatywny konstruktor
- Jak używać @staticmethod do walidacji i konwersji
- Jak działa dziedziczenie w kontekście każdego typu metody
- Najczęstsze błędy i jak ich unikać
























