How to create a list of objects in the Python class

Python's object-oriented programming allows you to create and manage multiple instances of a class efficiently. One powerful technique is creating a list of objects within a class, which enables you to store, access, and manipulate multiple instances collectively.

In this article, we'll explore how to create a list of objects in Python classes, including defining classes, creating instances, and performing operations on collections of objects.

Creating a Basic Class

First, let's define a simple class that will serve as our blueprint for creating objects ?

class Student:
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade
    
    def __str__(self):
        return f"Student: {self.name}, Age: {self.age}, Grade: {self.grade}"

# Create individual student objects
student1 = Student("Alice", 18, "A")
student2 = Student("Bob", 17, "B")
student3 = Student("Charlie", 19, "A+")

print(student1)
print(student2)
Student: Alice, Age: 18, Grade: A
Student: Bob, Age: 17, Grade: B

Method 1: Using a Class-Level List

You can maintain a class-level list that stores all instances of the class ?

class Student:
    students_list = []  # Class-level list
    
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade
        Student.students_list.append(self)  # Add to class list
    
    def __str__(self):
        return f"{self.name} (Age: {self.age}, Grade: {self.grade})"
    
    @classmethod
    def get_all_students(cls):
        return cls.students_list

# Create student objects (automatically added to class list)
student1 = Student("Alice", 18, "A")
student2 = Student("Bob", 17, "B")
student3 = Student("Charlie", 19, "A+")

# Access all students
all_students = Student.get_all_students()
print("All Students:")
for student in all_students:
    print(student)
All Students:
Alice (Age: 18, Grade: A)
Bob (Age: 17, Grade: B)
Charlie (Age: 19, Grade: A+)

Method 2: Using Instance-Level List

You can create a list within an instance to manage a collection of objects ?

class StudentManager:
    def __init__(self):
        self.students_list = []  # Instance-level list
    
    def add_student(self, student):
        self.students_list.append(student)
    
    def get_students(self):
        return self.students_list
    
    def display_students(self):
        for i, student in enumerate(self.students_list, 1):
            print(f"{i}. {student}")

class Student:
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade
    
    def __str__(self):
        return f"{self.name} (Age: {self.age}, Grade: {self.grade})"

# Create manager and students
manager = StudentManager()
manager.add_student(Student("Alice", 18, "A"))
manager.add_student(Student("Bob", 17, "B"))
manager.add_student(Student("Charlie", 19, "A+"))

# Display all students
manager.display_students()
1. Alice (Age: 18, Grade: A)
2. Bob (Age: 17, Grade: B)
3. Charlie (Age: 19, Grade: A+)

Method 3: Creating a List Outside the Class

The simplest approach is to create objects and store them in an external list ?

class Student:
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade
    
    def get_info(self):
        return f"{self.name}: Age {self.age}, Grade {self.grade}"

# Create a list of student objects
students = [
    Student("Alice", 18, "A"),
    Student("Bob", 17, "B"),
    Student("Charlie", 19, "A+"),
    Student("Diana", 16, "A")
]

# Access objects using indexing
print("First student:", students[0].get_info())
print("Last student:", students[-1].get_info())

# Iterate through all students
print("\nAll students:")
for student in students:
    print(student.get_info())
First student: Alice: Age 18, Grade A
Last student: Diana: Age 16, Grade A

All students:
Alice: Age 18, Grade A
Bob: Age 17, Grade B
Charlie: Age 19, Grade A+
Diana: Age 16, Grade A

Comparison

Method Scope Best For
Class-level list Shared across all instances Tracking all instances globally
Instance-level list Specific to each instance Managing collections per instance
External list Independent of class Simple collections and flexibility

Conclusion

Creating lists of objects in Python classes provides flexible ways to manage collections of instances. Choose class-level lists for global tracking, instance-level lists for per-object collections, or external lists for simple, flexible management.

Updated on: 2026-03-27T09:53:39+05:30

11K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements