Junior — Middle
Wyjaśnij różnice między self a cls w kontekście metod klasy
sobes.tech AI
Odpowiedź od AI
W Pythonie self i cls to konwencje dla pierwszego parametru metod, ale mają różne przeznaczenie:
selfto odniesienie do konkretnego egzemplarza klasy. Używa się go w zwykłych metodach instancji do dostępu do atrybutów i metod tego obiektu.clsto odniesienie do samej klasy, a nie do jej egzemplarza. Używa się go w metodach klasy (oznaczonych dekoratorem@classmethod), aby pracować z całą klasą, na przykład tworzyć nowe egzemplarze lub zmieniać właściwości klasy.
Przykład:
class MyClass:
class_var = 0
def __init__(self, value):
self.instance_var = value
def instance_method(self):
print(f'Zmienna instancji: {self.instance_var}')
@classmethod
def class_method(cls):
print(f'Zmienna klasy: {cls.class_var}')
obj = MyClass(10)
obj.instance_method() # wywołuje metodę instancji
MyClass.class_method() # wywołuje metodę klasy