Sobes.tech
Junior — Middle

What is the difference between class-level variables and instance variables in Python?

sobes.tech AI

Answer from AI

Class variables are declared inside a class but outside of methods, and are shared among all instances of that class. They are stored in the class's namespace and accessible through the class and its instances.

Instance variables are created inside methods (usually in __init__) and belong to a specific object. Each instance has its own values for these variables.

Example:

class MyClass:
    class_var = 0  # class-level variable

    def __init__(self, value):
        self.instance_var = value  # instance variable

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

Thus, changing a class variable affects all instances unless they have overridden it locally, while instance variables are unique to each object.