Sobes.tech
Junior — Middle

Обяснете разликите между self и cls в контекста на методите на класа

sobes.tech AI

Отговор от AI

В Python self и cls са конвенции за първия параметър на методите, но имат различно предназначение:

  • self е препратка към конкретен екземпляр на класа. Използва се в обикновени методи на екземпляра за достъп до атрибутите и методите на този обект.
  • cls е препратка към самия клас, а не към неговия екземпляр. Използва се в методи на класа (обозначени с декоратора @classmethod), за да работи с класа като цяло, например, за създаване на нови екземпляри или за промяна на свойства на класа.

Пример:

class MyClass:
    class_var = 0

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

    def instance_method(self):
        print(f'Променлива на екземпляра: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Променлива на класа: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # извикване на метод на екземпляра
MyClass.class_method()  # извикване на метод на класа