Sobes.tech
Назад к вопросам
Junior — Middle
77

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

Ответ от нейросети

sobes.tech AI

Объявление переменной внутри конструктора и на уровне класса в 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 — только на конкретный экземпляр.