Sobes.tech
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:

  • self viitab konkreetsele klassi eksemplarile. Seda kasutatakse tavalistes eksemplarimeetodites, et pääseda ligi selle objekti atribuutidele ja meetoditele.
  • cls viitab ise klassile, mitte selle eksemplarile. Seda kasutatakse klassimeetodites (@classmethod mä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