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.