Sobes.tech
Junior — Middle

Paaiškinkite skirtumus tarp self ir cls klasės metodų kontekste

sobes.tech AI

Atsakymas iš AI

Python'e self ir cls yra konvencijos pirmojo metodo parametro, tačiau jie turi skirtingą paskirtį:

  • self nuoroda į konkretų klasės egzempliorių. Naudojamas įprastiniuose egzemplioriaus metoduose, norint pasiekti šio objekto atributus ir metodus.
  • cls nuoroda į patį klasę, o ne į jos egzempliorių. Naudojama klasės metoduose (@classmethod žymėtuose), kad dirbtų su klase apskritai, pvz., kurti naujus egzempliorius arba keisti klasės savybes.

Pavyzdys:

class MyClass:
    class_var = 0

    def __init__(self, value):
        self.instance_var = value

    def instance_method(self):
        print(f'Egzemplioriaus kintamasis: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Klasės kintamasis: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # kviečia egzemplioriaus metodą
MyClass.class_method()  # kviečia klasės metodą