Junior — Middle
Selgitage erinevusi self ja cls vahel klassimeetodite kontekstis
sobes.tech AI
Vastus AI-lt
Pythonis on self ja cls konventsioonid meetodite esimesele parameetrile, kuid neil on erinevad eesmärgid:
selfviitab konkreetsele klassi eksemplarile. Seda kasutatakse tavalistes eksemplarimeetodites, et pääseda ligi selle objekti atribuutidele ja meetoditele.clsviitab ise klassile, mitte selle eksemplarile. Seda kasutatakse klassimeetodites (@classmethodmärgistatud), et töötada kogu klassiga, näiteks luua uusi eksemplare või muuta klassi omadusi.
Näide:
class MyClass:
class_var = 0
def __init__(self, value):
self.instance_var = value
def instance_method(self):
print(f'Eksemplari muutuja: {self.instance_var}')
@classmethod
def class_method(cls):
print(f'Klassi muutuja: {cls.class_var}')
obj = MyClass(10)
obj.instance_method() # kutsub eksemplari meetodi
MyClass.class_method() # kutsub klassi meetodi