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į:
selfnuoroda į konkretų klasės egzempliorių. Naudojamas įprastiniuose egzemplioriaus metoduose, norint pasiekti šio objekto atributus ir metodus.clsnuoroda į 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ą