Sobes.tech
Junior — Middle
123

Quelle est la différence entre les variables de niveau classe et les variables d'instance en Python?

Entreprises à qui on a demandé
Лига Ставок

Réponse de l'IA

sobes.tech 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

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