Назад к вопросам
Junior — Middle
65
Каково отличие между переменными, объявленными на уровне класса, и переменными, принадлежащими конкретным объектам?
Ответ от нейросети
sobes.tech AI
В Python переменные, объявленные на уровне класса, называются атрибутами класса, а переменные, принадлежащие конкретным объектам — атрибутами экземпляра.
- Атрибуты класса общие для всех экземпляров класса. Изменение такого атрибута отражается на всех объектах, если только у объекта нет собственного одноимённого атрибута.
- Атрибуты экземпляра принадлежат конкретному объекту и хранятся в его словаре
__dict__. Они уникальны для каждого объекта.
Пример:
class MyClass:
class_var = 0 # атрибут класса
def __init__(self, value):
self.instance_var = value # атрибут экземпляра
obj1 = MyClass(10)
obj2 = MyClass(20)
print(obj1.class_var) # 0
print(obj2.class_var) # 0
MyClass.class_var = 5
print(obj1.class_var) # 5
print(obj2.class_var) # 5
obj1.instance_var = 15
print(obj1.instance_var) # 15
print(obj2.instance_var) # 20
Таким образом, атрибуты класса используются для хранения общих данных, а атрибуты экземпляра — для индивидуальных свойств объектов.