Назад к вопросам
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
Таким образом, статические переменные используются для хранения данных, общих для всех объектов, а переменные объектов — для индивидуальных данных каждого экземпляра.