Найти - Пользователи
Полная версия: динамиечское имя переменной
Начало » Python для новичков » динамиечское имя переменной
1
ilovey0u
как сделать часть имени переменной динамическим?
т.е. необходимо :
client1 = xmpp.Client(jid1.getDomain(),debug=[])
client2 = xmpp.Client(jid2.getDomain(),debug=[])
а не
client[1] = ...
client[2] = ...
тоесть массив в реализации не подходит.
есть ли решение? гугл привёл в пустоту.
dimy44
Не буду рассказывать, что это неправильно, тыщи раз обсуждалось, дело ваше, вот пример
for num in range(1, 3):
    exec('client{0} = xmpp.Client(jid{0}.getDomain(), debug=[])'.format(num))
да и через setattr можно.
o7412369815963
dimy44
Не буду рассказывать, что это неправильно, тыщи раз обсуждалось
Даже непонятно откуда такие потребности… Как будь-то с РНР веет…
Singularity
а чем плох масив/словарь ?
doza_and
Singularity
а чем плох массив/словарь ?

Ну это ясно. С ними значительно больше писанины.
print a_123
print d["a_123"]
Singularity
doza_and
а если я захочу сделать что-то со всем такими объектами ?
FishHook
Singularity
а если я захочу сделать что-то со всем такими объектами ?
getattr и setattr никто не отменял, просто ТС про них не знает и это хорошо.
Singularity
а я не понимаю причем здесь setattr если надо globals() использовать
dimy44
Извращаться можно по-разному
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)))
doza_and
Singularity
а если я захочу сделать что-то со всем такими объектами ?
Обычно такие переменные возникают когда их скопом тащат из внешней среды. Например скриптик внутри cad системы. Хочется пользователя окружить мягкой средой, в которой его окружности и точки можно обзывать без кавычек и без знания имени контейнера в котором они живут. Если есть внешняя классификация. Например все окружности или все точки внутри заданного прямоугольника, то при создании объектов можно их одновременно регистрировать в соответствующих контейнерах.

Простите, многословен. Фантазия. Это довольно специфические области применения.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB