Python iterator class example

Candice 162 Published: 02/11/2025

Python iterator class example

Here's a simple implementation of an iterator class in Python:

class MyIterator:

def init(self, data):

self.data = data

self.index = 0

def iter(self):

return self

def next(self):

if self.index < len(self.data):

result = self.data[self.index]

self.index += 1

return result

raise StopIteration

Example usage:

data = [1, 2, 3, 4, 5]

my_iter = MyIterator(data)

for item in my_iter:

print(item)

Let's break this down:

The MyIterator class has two main methods: __init__ and __next__. The __init__ method takes some data as input, stores it in the data attribute, and initializes an index at 0. The __iter__ method returns itself, which is necessary for making our class iterable. The __next__ method returns the next item in the iteration. If we've reached the end of the data, it raises a StopIteration exception.

When you create an instance of this class (MyIterator) and loop over it using a for loop, Python will call the __next__ method on each iteration until StopIteration is raised, at which point the loop terminates.

Can you iterate through a class Python?

I'd be happy to explain how to iterate through a class in Python.

In Python, classes are templates for creating objects that have attributes (data) and methods (functions). Iterating through a class can be achieved using various techniques depending on what you want to accomplish. Here are some common ways:

Using the __dict__ attribute: Every class has an internal dictionary called __dict__ that stores its attributes (also known as instance variables). You can iterate over this dictionary to access all the attributes of a class:
class MyClass:

attr1 = 'value1'

attr2 = 'value2'

for key, value in MyClass.dict.items():

print(f"{key}: {value}")

This will output:

attr1: value1

attr2: value2

Using the inspect module: The inspect module provides functions for inspecting live objects. You can use its getmembers() function to get a list of attributes (methods and variables) in a class:
import inspect

class MyClass:

def method(self):

pass

attr1 = 'value1'

attr2 = 'value2'

for name, value in inspect.getmembers(MyClass):

if not callable(value): # skip methods

print(f"{name}: {value}")

This will output the same as above:

attr1: value1

attr2: value2

Using a list comprehension: If you have a class with multiple methods and attributes, you can use a list comprehension to create a list of attribute names or method names:
class MyClass:

def method1(self):

pass

def method2(self):

pass

attr1 = 'value1'

attr2 = 'value2'

attribute_names = [name for name, value in MyClass.dict.items() if not callable(value)]

method_names = [name for name, value in inspect.getmembers(MyClass) if callable(value)]

print(attribute_names) # ['attr1', 'attr2']

print(method_names) # ['method1', 'method2']

These are some common ways to iterate through a class in Python. Depending on your specific use case, you may choose one or a combination of these approaches.

Remember, when working with classes in Python, it's essential to understand the concept of instance variables (attributes) and methods. These two concepts form the foundation of object-oriented programming in Python.