Sobes.tech
Back to questions
Junior — Middle
74

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

Companies where asked
РостелекомРостелеком

Answer from AI

sobes.tech 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'Instance var: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Class var: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # обращается к экземпляру
MyClass.class_method()  # обращается к классу