Sobes.tech
Back to questions
Junior — Middle
64

Каково отличие между переменными, объявленными на уровне класса, и переменными, принадлежащими конкретным объектам?

Answer from AI

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

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