How to count the number of instances of a class in Python?

In Python, counting the number of instances of a class is a common task that can be accomplished using various techniques. One straightforward approach is to use a class variable to keep track of the number of instances created.

To implement this method, you can define a class variable, such as count, and increment it each time a new instance of the class is created. This variable can be accessed from both the class and its instances, allowing you to easily retrieve the total number of instances created.

Another approach is to use the built-in function len() along with a container, such as a list, that stores all the instances of the class. This method involves creating a list in the class and appending each new instance to it.

Method 1: Using a Class Variable Counter

The most memory-efficient approach uses a class variable that increments with each new instance ?

class MyClass:
    count = 0  # initialize count to zero

    def __init__(self, name):
        self.name = name
        MyClass.count += 1  # increment count by one for each new instance

# create some instances of the class
obj1 = MyClass("Alice")
obj2 = MyClass("Bob")
obj3 = MyClass("Charlie")

# print the number of instances created
print("Total number of instances created:", MyClass.count)
Total number of instances created: 3

How It Works

In this example, we define a class called MyClass that has a class variable called count initialized to zero. The __init__ method is called each time a new instance of the class is created and increments the count variable by one. The class variable can be accessed using the class name, MyClass.count.

Method 2: Using a List to Store Instances

This approach stores references to all instances, allowing access to individual objects ?

class MyClass:
    instances = []

    def __init__(self, name):
        self.name = name
        MyClass.instances.append(self)

# create some instances of the class
obj1 = MyClass("Alice")
obj2 = MyClass("Bob")
obj3 = MyClass("Charlie")

# print the total number of instances created
print("Total number of instances created:", len(MyClass.instances))

# access individual instances
print("First instance name:", MyClass.instances[0].name)
Total number of instances created: 3
First instance name: Alice

How It Works

In this example, we define a class called MyClass that has an empty list called instances. In the __init__ method, we append each new instance of the class to the instances list. We can then use the built-in function len() to determine the total number of instances stored in the list.

Handling Instance Deletion

To accurately count instances when objects are deleted, you can use the __del__ method ?

class MyClass:
    count = 0

    def __init__(self, name):
        self.name = name
        MyClass.count += 1

    def __del__(self):
        MyClass.count -= 1

# create and delete instances
obj1 = MyClass("Alice")
obj2 = MyClass("Bob")
print("After creation:", MyClass.count)

del obj1
print("After deletion:", MyClass.count)
After creation: 2
After deletion: 1

Comparison

Method Memory Usage Access to Instances Best For
Class Variable Counter Low No Simple counting
List Storage High Yes Need to access instances

Conclusion

Use a class variable counter for memory-efficient instance counting. Use a list storage approach when you need to access individual instances later. Both methods provide reliable ways to track the number of class instances in Python.

Updated on: 2026-03-27T11:05:17+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements