Instance vs Class Variables
OOP Core
Instance vs Class Variables
Python classes hold both shared and per-instance state. Know where your data lives to avoid cross-instance side effects.
Comparison
| Type | Defined | Accessed | Use for |
|---|---|---|---|
| Class variable | Inside class body | Class.attr or instance.attr | Defaults, configuration, counters |
| Instance variable | Inside methods (self.attr) | instance.attr | Per-object state |
class Cart:
tax_rate = 0.07 # class variable
def __init__(self):
self.items = [] # instance variable
Mutable class attributes
Be careful assigning mutable objects at class level—they are shared:
class Problem:
values = [] # shared across all instances
Prefer instantiating inside __init__.