Как создавать объекты налету?
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>]