pythonclassobject

How to create multiple class objects with a loop in python?


Suppose you have to create 10 class objects in python, and do something with them, like:

obj_1 = MyClass()
other_object.add(obj_1)
obj_2 = MyClass()
other_object.add(obj_2)
.
.
.
obj_10 = MyClass()
other_object.add(obj_10)

How would you do it with a loop, and assign a variable to each object (like obj_1), so that the code will be shorter? Each object should be accessible outside the loop

obj_1.do_sth()

Solution

  • This question is asked every day in some variation. The answer is: keep your data out of your variable names, and this is the obligatory blog post.

    In this case, why not make a list of objs?

    objs = [MyClass() for i in range(10)]
    for obj in objs:
        other_object.add(obj)
    
    objs[0].do_sth()