Skip to main content

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

TypeDefinedAccessedUse for
Class variableInside class bodyClass.attr or instance.attrDefaults, configuration, counters
Instance variableInside methods (self.attr)instance.attrPer-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__.

Next up in your learning path