Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding class attributes using a for loop in Python

I was trying to generate a class from a dictionary:

class attr:
    for key in objects_type:
        setattr(attr, key, lambda cl: list())

This gives the error that attr is not defined during the for loop. I know I could write:

class attr:
    pass
for key in objects_type:
    setattr(attr, key, lambda cl: list())

But I am sure I remember seeing code similar to the first example somewhere. Does anyone know if it is possible to write something similar to the first form?

like image 474
Casebash Avatar asked Dec 07 '25 08:12

Casebash


1 Answers

Although it's not very elegant, you can use locals():

>>> class c(object):
...     for i in range(10):
...         locals()['A' + str(i)] = i
... 
>>> c.A0
0
>>> c.A7
7
like image 132
Max Shawabkeh Avatar answered Dec 08 '25 22:12

Max Shawabkeh