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

  • self to odniesienie do konkretnego egzemplarza klasy. Używa się go w zwykłych metodach instancji do dostępu do atrybutów i metod tego obiektu.
  • cls to 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