Sobes.tech
Junior — Middle

Milline on erinevus kasutamisel meetodite, mis on deklareeritud kui static ja class Pythonis?

sobes.tech AI

Vastus AI-lt

Pythonis erinevad meetodid, mis on deklareeritud kui @staticmethod ja @classmethod, nende juurdepääsumeetodite poolest klassi ja eksemplari andmetele:

  • @staticmethod — on meetod, mis automaatselt ei saa viidet kas eksemplarile (self) ega klassile (cls). See käitub nagu tavaline funktsioon, kuid asub klassi sees loogilise rühmituse jaoks. Ta ei saa muuta klassi ega eksemplari olekut.

  • @classmethod — on meetod, mis võtab esimese argumendina vastu ise klassi (cls), mitte eksemplari. See võimaldab töötada klassi atribuutidega, luua alternatiivseid konstruktorid ja muuta klassi olekut.

Näide:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Tere!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Kuvab: Tere!
MyClass.increment_count()
print(MyClass.count)     # Kuvab: 1

Seega, staticmethod on lihtsalt funktsioon klassi sees, ja classmethod on meetod, mis töötab koos klassiga ise.