Junior — Middle
Каква е разликата между променливите на ниво клас и променливите на екземпляр в Python?
sobes.tech AI
Отговор от AI
Променливите на ниво клас (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
По този начин, промяната на променливата на класа се отразява на всички екземпляри, ако те не я пренапишат локално, а променливите на екземпляра са уникални за всеки обект.