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.