Sobes.tech
Junior — Middle

¿En qué se diferencian las variables de nivel de clase de las variables de instancia en Python?

sobes.tech AI

Respuesta de la IA

Переменные уровня класса (class variables) объявляются внутри класса, но вне методов, и общие для всех экземпляров этого класса. Они хранятся в пространстве имен класса и доступны через класс и его экземпляры.

Переменные экземпляра (instance variables) создаются внутри методов (обычно в __init__) и принадлежат конкретному объекту. Каждый экземпляр имеет свои собственные значения таких переменных.

Пример:

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
print(obj1.instance_var)   # 10
print(obj2.instance_var)   # 20

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

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