Sobes.tech
Junior
181

Ako sa implementujú statické metódy v Pythone?

Odpoveď od AI

sobes.tech AI

Statická metóda nie je viazaná na inštanciu triedy ani na samotnú triedu. Správa sa ako bežná funkcia, ale nachádza sa v priestore mien triedy.

Implementuje sa pomocou dekorátora @staticmethod.

class MyClass:
    def __init__(self, value):
        self.value = value

    def instance_method(self):
        # Metóda inštancie má prístup k self
        print(f"Inštančná metóda: {self.value}")

    @classmethod
    def class_method(cls):
        # Metóda triedy má prístup k triede cez cls
        print(f"Triedna metóda: {cls.__name__}")

    @staticmethod
    def static_method(x, y):
        # Statická metóda neprijíma implicitný argument (self alebo cls)
        print(f"Statická metóda: {x + y}")

# Volanie statickej metódy
MyClass.static_method(5, 10)

# Môže byť volaná aj cez inštanciu, ale nie je to odporúčané
obj = MyClass(20)
obj.static_method(1, 2)

Hlavné vlastnosti:

  • Neprijíma prvý implicitný argument (self alebo cls).
  • Nemá prístup k atribútom inštancie alebo triedy.
  • Nachádza sa v priestore mien triedy pre logickú skupinu.
  • Môže byť volaná ako cez triedu, tak aj cez inštanciu (hoci je preferované volanie cez triedu).

Hlavným účelom sú pomocné funkcie spojené s triedou, ale ktoré nezávisia od stavu konkrétnej inštancie alebo samotnej triedy (napríklad pomocné funkcie, validátory, generátory, ktoré logicky patria triede).