Форум сайта python.su
0
как сделать часть имени переменной динамическим?
т.е. необходимо :
client1 = xmpp.Client(jid1.getDomain(),debug=[]) client2 = xmpp.Client(jid2.getDomain(),debug=[])
client[1] = ... client[2] = ...
Отредактировано ilovey0u (Дек. 22, 2013 00:34:44)
Офлайн
Не буду рассказывать, что это неправильно, тыщи раз обсуждалось, дело ваше, вот пример
for num in range(1, 3): exec('client{0} = xmpp.Client(jid{0}.getDomain(), debug=[])'.format(num))
Офлайн
32
dimy44Даже непонятно откуда такие потребности… Как будь-то с РНР веет…
Не буду рассказывать, что это неправильно, тыщи раз обсуждалось
Офлайн
75
а чем плох масив/словарь ?
Офлайн
253
Singularity
а чем плох массив/словарь ?
print a_123 print d["a_123"]
Офлайн
75
doza_and
а если я захочу сделать что-то со всем такими объектами ?
Офлайн
568
Singularitygetattr и setattr никто не отменял, просто ТС про них не знает и это хорошо.
а если я захочу сделать что-то со всем такими объектами ?
Офлайн
75
а я не понимаю причем здесь setattr если надо globals() использовать
Офлайн
Извращаться можно по-разному
import sys main_module = sys.modules['__main__'] for i in range(5): setattr(main_module, 'var{0}'.format(i), "I'm var{0}".format(i)) print(getattr(main_module, 'var{0}'.format(i)))
Офлайн
253
SingularityОбычно такие переменные возникают когда их скопом тащат из внешней среды. Например скриптик внутри cad системы. Хочется пользователя окружить мягкой средой, в которой его окружности и точки можно обзывать без кавычек и без знания имени контейнера в котором они живут. Если есть внешняя классификация. Например все окружности или все точки внутри заданного прямоугольника, то при создании объектов можно их одновременно регистрировать в соответствующих контейнерах.
а если я захочу сделать что-то со всем такими объектами ?
Офлайн