Junior
177
Jak zaimplementować metody statyczne w Pythonie?
Odpowiedź od AI
sobes.tech AI
Metoda statyczna nie jest powiązana z instancją klasy ani z samą klasą. Zachowuje się jak zwykła funkcja, ale znajduje się w przestrzeni nazw klasy.
Implementuje się ją za pomocą dekoratora @staticmethod.
class MyClass:
def __init__(self, value):
self.value = value
def instance_method(self):
# Metoda instancji ma dostęp do self
print(f"Metoda instancji: {self.value}")
@classmethod
def class_method(cls):
# Metoda klasy ma dostęp do klasy przez cls
print(f"Metoda klasy: {cls.__name__}")
@staticmethod
def static_method(x, y):
# Metoda statyczna nie przyjmuje argumentu domyślnego (self lub cls)
print(f"Metoda statyczna: {x + y}")
# Wywołanie metody statycznej
MyClass.static_method(5, 10)
# Można też wywołać przez instancję, ale nie jest to zalecane
obj = MyClass(20)
obj.static_method(1, 2)
Główne cechy:
- Nie przyjmuje domyślnego pierwszego argumentu (
selflubcls). - Nie ma dostępu do atrybutów instancji ani klasy.
- Znajduje się w przestrzeni nazw klasy dla grupowania logicznego.
- Może być wywoływana zarówno przez klasę, jak i przez instancję (choć wywołanie przez klasę jest preferowane).
Głównym celem są funkcje pomocnicze powiązane z klasą, ale niezależne od stanu konkretnej instancji lub samej klasy (np. funkcje pomocnicze, walidatory, generatory, które logicznie należą do klasy).