Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
