Sobes.tech
Junior
180

Kuidas implementeeritakse Pythonis staatilisi meetodeid?

Vastus AI-lt

sobes.tech AI

Statiline meetod ei ole seotud klassi eksemplariga ega iseendaga. See käitub nagu tavaline funktsioon, kuid asub klassi nimede ruumis.

Seda rakendatakse @staticmethod dekoratori abil.

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

    def instance_method(self):
        # Eksemplari meetodil on juurdepääs self-le
        print(f"Eksemplari meetod: {self.value}")

    @classmethod
    def class_method(cls):
        # Klassimeetodil on juurdepääs klassile läbi cls
        print(f"Klassi meetod: {cls.__name__}")

    @staticmethod
    def static_method(x, y):
        # Statiline meetod ei saa automaatselt argumente (self või cls)
        print(f"Statiline meetod: {x + y}")

# Statilise meetodi kutsumine
MyClass.static_method(5, 10)

# Seda saab kutsuda ka eksemplari kaudu, kuid see ei ole soovitatav
obj = MyClass(20)
obj.static_method(1, 2)

Peamised omadused:

  • Ei võta esimese argumendina automaatselt self või cls
  • Ei pääse ligi eksemplari või klassi atribuutidele
  • Asub klassi nimede ruumis loogilise rühmitamise jaoks
  • Seda saab kutsuda nii klassi kui ka eksemplari kaudu (kuigi kutsumine klassi kaudu on eelistatud)

Peamine eesmärk on abifunktsioonid, mis on seotud klassiga, kuid ei sõltu konkreetse eksemplari või klassi seisundist (näiteks abifunktsioonid, valideerijad, generaatorid, mis loogiliselt kuuluvad klassile).