Metody STATYCZNE
@classmethod:
class Kalkulator:
PI = 3.14159
@classmethod
def oblicz_obwod_okregu(cls, promien):
return 2 * cls.PI * promien
promien = 5
obwod = Kalkulator.oblicz_obwod_okregu(promien)
print("Obwód koła o promieniu", promien, "wynosi:", obwod)
W tym przykładzie oblicz_obwod_okregu jest metodą klasy Kalkulator, oznaczoną jako @classmethod. Metoda ta używa stałej klasy PI, aby obliczyć obwód okręgu na podstawie podanego promienia. Przy użyciu @classmethod metoda ma dostęp do klasy jako swojego pierwszego argumentu, co pozwala jej korzystać z atrybutów klasy.
@staticmethod:
class NarzedziaMatematyczne:
@staticmethod
def podnies_do_potegi(x, n):
return x ** n
liczba = 2
wykladnik = 3
wynik = NarzedziaMatematyczne.podnies_do_potegi(liczba, wykladnik)
print(liczba, "do potęgi", wykladnik, "to:", wynik)
W tym przykładzie podnies_do_potegi jest statyczną metodą klasy NarzedziaMatematyczne, oznaczoną jako @staticmethod. Metoda ta nie ma dostępu ani do atrybutów ani do metod klasy czy instancji. Po prostu wykonuje operację podnoszenia do potęgi na podanych argumentach.
Podsumowując:
@classmethodjest używany, gdy chcemy tworzyć metody, które mają dostęp do klasy jako całości i mogą korzystać z jej atrybutów.@staticmethodjest używany, gdy chcemy tworzyć metody, które są związane z klasą, ale nie potrzebują dostępu ani do atrybutów klasy ani do instancji.
