Python Instance and class variables

Introduction Reading Time: 10 min

Table of Contents

Description

In OOP, variables are categorized based on how and where they are defined:
Instance Variables – Belong to the object (instance) and are defined inside methods using self.
Class Variables – Shared across all instances; defined inside the class but outside any method.
Local Variables – Defined within methods and exist only during method execution.
Static Variables – Another term used for class variables in some contexts.

Prerequisites

  • Basic understanding of Python syntax
  • Understanding of functions and classes
  • Familiarity with self keyword

Examples

Here's a simple program in Python:

✅ Instance Variable
class Student:
    def __init__(self, name, grade):
        self.name = name        # Instance variable
        self.grade = grade      # Instance variable

s1 = Student("Alice", "A")
print(s1.name)  # Output: Alice
✅ Class Variable
class Student:
    school_name = "ABC School"  # Class variable (shared)

    def __init__(self, name):
        self.name = name         # Instance variable

s1 = Student("Tom")
s2 = Student("Jerry")

print(s1.school_name)  # Output: ABC School
print(s2.school_name)  # Output: ABC School

# Changing class variable
Student.school_name = "XYZ School"
print(s1.school_name)  # Output: XYZ School
✅ Local Variable
class Calculator:
    def add(self, a, b):
        result = a + b       # Local variable
        return result

c = Calculator()
print(c.add(3, 4))  # Output: 7
✅ Difference Between Instance and Class Variable
class Car:
    wheels = 4  ️  # Class variable

    def __init__(self, brand):
        self.brand = brand   # Instance variable

car1 = Car("Toyota")
car2 = Car("Honda")

car1.wheels = 6             # Creates a new instance variable for car1 only
print(car1.wheels)  # Output: 6
print(car2.wheels)  # Output: 4
print(Car.wheels)   # Output: 4

      

Real-World Applications

Instance Variables store data specific to a user (e.g., user profile info).

Class Variables are used for constants or shared counters (e.g., number of instances).

Local Variables are temporary and used inside methods for calculations, temporary data storage, etc.

Where topic Can Be Applied

Web frameworks (e.g., Django models using instance/class variables)

Game dev: Object properties like health, speed

Simulation systems: Vehicle types, weather conditions

OOP-based systems like banking, inventory, school management

Resources

Topic video source

A comprehensive video

Watch

Interview Questions

What is the difference between instance and class variables?

How do you declare a class variable in Python?

What happens if you override a class variable in an instance?

Can local variables be accessed outside a method?

How are static variables handled in Python?