Junior
Jak jsou ve Pythonu implementovány statické metody?
sobes.tech AI
Odpověď od AI
Statická metoda není vázána na instanci třídy ani na samotnou třídu. Chová se jako běžná funkce, ale nachází se v jmenném prostoru třídy.
Implementuje se pomocí dekorátoru @staticmethod.
class MyClass:
def __init__(self, value):
self.value = value
def instance_method(self):
# Metoda instance má přístup k self
print(f"Instance metoda: {self.value}")
@classmethod
def class_method(cls):
# Metoda třídy má přístup ke třídě přes cls
print(f"Třídní metoda: {cls.__name__}")
@staticmethod
def static_method(x, y):
# Statická metoda nepřijímá implicitní argument (self nebo cls)
print(f"Statická metoda: {x + y}")
# Volání statické metody
MyClass.static_method(5, 10)
# Lze ji volat i přes instanci, ale nedoporučuje se
obj = MyClass(20)
obj.static_method(1, 2)
Hlavní vlastnosti:
- Nepřijímá první implicitní argument (
selfnebocls). - Nemá přístup k atributům instance nebo třídy.
- Nachází se v jmenném prostoru třídy pro logickou skupinu.
- Může být volána jak přes třídu, tak přes instanci (ačkoliv je preferováno volání přes třídu).
Hlavním účelem jsou pomocné funkce spojené s třídou, ale nezávislé na stavu konkrétní instance nebo třídy samotné (například pomocné funkce, validátory, generátory, které logicky patří ke třídě).