Как создавать объекты налету?

Python. В программе требуется чтобы пользователь мог создавать столько объектов класса, сколько пожелает. Однако давать имена объектам (как и переменным, например) "налету" попросту невозможно. Как решить проблему?


Ответы (4 шт):

Автор решения: Sergei Kirjanov

Можно класть объекты в какую-то коллекцию, например массив, который будет доступен через свою переменную.

→ Ссылка
Автор решения: dIm0n

Летаем, создаём:

for i in range(10):
  exec('a_' + str(i) + ' = 42')

print(a_0)
print(a_7)
→ Ссылка
Автор решения: CrazyElf

Так то в питоне всё можно:

for i in range(3):
    globals()['i' + str(i)] = i

print(i0, i1, i2)

0 1 2

Но лучше и правда кладите объекты в коллекцию (список, словарь), можно даже внутри поля этого класса, чтобы класс "знал" все свои объекты и легко было посмотреть их список.

→ Ссылка
Автор решения: alex

Вы серьезно?

>>> class Foo():
...     pass
... 
>>> foo_lst = []
>>> def make_foo():
...     foo_lst.append(Foo())
...     
>>> make_foo()
>>> make_foo()
>>> make_foo()
>>> foo_lst
[<__main__.Foo object at 0x7fced407b690>, <__main__.Foo object at 0x7fced407bcd0>, <__main__.Foo object at 0x7fced407b950>]
→ Ссылка