Junior — Middle
Magyarázza el a különbségeket a self és a cls között a osztálymetódusok kontextusában
sobes.tech MI
Válasz az MI-től
Pythonban a self és a cls konvenciók a metódusok első paraméterére vonatkoznak, de különböző célt szolgálnak:
selfegy adott példányra utal a osztályból. Általában az példány metódusokban használják, hogy hozzáférjenek az objektum attribútumaihoz és metódusaihoz.clsaz osztályra utal, nem a példányra. Az osztálymetódusokban (@classmethoddekorátorral jelölve) használják, hogy az osztállyal általánosan dolgozzanak, például új példányokat hozzanak létre vagy az osztály tulajdonságait módosítsák.
Példa:
class MyClass:
class_var = 0
def __init__(self, value):
self.instance_var = value
def instance_method(self):
print(f'Példány változó: {self.instance_var}')
@classmethod
def class_method(cls):
print(f'Osztály változó: {cls.class_var}')
obj = MyClass(10)
obj.instance_method() # példány metódus hívása
MyClass.class_method() # osztály metódus hívása