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

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

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

sobes.tech AI

В Python статические переменные класса (атрибуты класса) общие для всех экземпляров класса, тогда как переменные объектов (атрибуты экземпляра) принадлежат конкретному объекту.

  • Статические переменные (атрибуты класса) объявляются внутри класса, но вне методов, и доступны через класс и все его объекты.
  • Переменные объектов создаются внутри методов (обычно в __init__) через self и уникальны для каждого экземпляра.

Пример:

class MyClass:
    static_var = 0  # атрибут класса

    def __init__(self, value):
        self.instance_var = value  # атрибут объекта

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1.static_var)  # 0
print(obj2.static_var)  # 0

obj1.static_var = 5  # создаст атрибут объекта obj1, не меняя атрибут класса
print(obj1.static_var)  # 5
print(obj2.static_var)  # 0
print(MyClass.static_var)  # 0

print(obj1.instance_var)  # 10
print(obj2.instance_var)  # 20

Таким образом, статические переменные используются для хранения данных, общих для всех объектов, а переменные объектов — для индивидуальных данных каждого экземпляра.