Чем отличаются объявления переменной внутри конструктора и объявлении переменной на уровне класса?

Объявление переменной внутри конструктора и на уровне класса в Python отличается областью видимости и временем жизни:

Короткий ответ

Что ответить на собеседовании

Объявление переменной внутри конструктора и на уровне класса в Python отличается областью видимости и временем жизни:

Подробный разбор

Ответ с пояснениями

Объявление переменной внутри конструктора и на уровне класса в Python отличается областью видимости и временем жизни:

  • Переменная на уровне класса — это атрибут класса, общий для всех экземпляров. Она создаётся один раз и доступна через класс и все его объекты.
  • Переменная внутри конструктора (обычно через self) — это атрибут экземпляра, уникальный для каждого объекта класса.

Пример:

class MyClass:
    class_var = 10  # переменная класса

    def __init__(self, value):
        self.instance_var = value  # переменная экземпляра

obj1 = MyClass(5)
obj2 = MyClass(7)

print(obj1.class_var)      # 10
print(obj2.class_var)      # 10
print(obj1.instance_var)   # 5
print(obj2.instance_var)   # 7

Таким образом, изменение class_var повлияет на все объекты, а изменение instance_var — только на конкретный экземпляр.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее