Sobes.tech
Junior — Middle

Czym różni się użycie metody statycznej od metody klasy w Pythonie?

sobes.tech AI

Odpowiedź od AI

Metoda statyczna w Pythonie to metoda, która automatycznie nie przyjmuje ani instancji klasy (self), ani samej klasy (cls) jako pierwszego argumentu. Jest deklarowana za pomocą dekoratora @staticmethod i zachowuje się jak zwykła funkcja, ale logicznie należy do klasy.

Metoda klasy jest deklarowana za pomocą dekoratora @classmethod i przyjmuje klasę (cls) jako pierwszy argument. Pozwala to metodzie na pracę z samą klasą, na przykład tworzenie nowych instancji lub modyfikowanie właściwości klasy.

Przykład:

class MyClass:
    @staticmethod
    def static_method():
        print("To jest metoda statyczna")

    @classmethod
    def class_method(cls):
        print(f"To jest metoda klasy, wywoływana dla {cls}")

MyClass.static_method()  # Wypisze: To jest metoda statyczna
MyClass.class_method()   # Wypisze: To jest metoda klasy, wywoływana dla <class '__main__.MyClass'>

Używaj więc metody statycznej, gdy funkcja nie zależy od stanu klasy lub jej instancji, a metody klasy, gdy trzeba pracować z samą klasą.