Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2013 00:31:58

ilovey0u
Зарегистрирован: 2013-12-22
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

динамиечское имя переменной

как сделать часть имени переменной динамическим?
т.е. необходимо :

client1 = xmpp.Client(jid1.getDomain(),debug=[])
client2 = xmpp.Client(jid2.getDomain(),debug=[])
а не
client[1] = ...
client[2] = ...
тоесть массив в реализации не подходит.
есть ли решение? гугл привёл в пустоту.

Отредактировано ilovey0u (Дек. 22, 2013 00:34:44)

Офлайн

#2 Дек. 22, 2013 01:00:27

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

динамиечское имя переменной

Не буду рассказывать, что это неправильно, тыщи раз обсуждалось, дело ваше, вот пример

for num in range(1, 3):
    exec('client{0} = xmpp.Client(jid{0}.getDomain(), debug=[])'.format(num))
да и через setattr можно.

Офлайн

#3 Дек. 22, 2013 13:14:32

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

динамиечское имя переменной

dimy44
Не буду рассказывать, что это неправильно, тыщи раз обсуждалось
Даже непонятно откуда такие потребности… Как будь-то с РНР веет…

Офлайн

#4 Дек. 22, 2013 14:00:30

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

динамиечское имя переменной

а чем плох масив/словарь ?

Офлайн

#5 Дек. 22, 2013 14:34:52

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

динамиечское имя переменной

Singularity
а чем плох массив/словарь ?

Ну это ясно. С ними значительно больше писанины.
print a_123
print d["a_123"]



Офлайн

#6 Дек. 22, 2013 14:43:05

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

динамиечское имя переменной

doza_and
а если я захочу сделать что-то со всем такими объектами ?

Офлайн

#7 Дек. 22, 2013 14:52:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

динамиечское имя переменной

Singularity
а если я захочу сделать что-то со всем такими объектами ?
getattr и setattr никто не отменял, просто ТС про них не знает и это хорошо.



Офлайн

#8 Дек. 22, 2013 20:17:12

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

динамиечское имя переменной

а я не понимаю причем здесь setattr если надо globals() использовать

Офлайн

#9 Дек. 22, 2013 21:57:14

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

динамиечское имя переменной

Извращаться можно по-разному

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)))

Офлайн

#10 Дек. 23, 2013 21:11:01

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

динамиечское имя переменной

Singularity
а если я захочу сделать что-то со всем такими объектами ?
Обычно такие переменные возникают когда их скопом тащат из внешней среды. Например скриптик внутри cad системы. Хочется пользователя окружить мягкой средой, в которой его окружности и точки можно обзывать без кавычек и без знания имени контейнера в котором они живут. Если есть внешняя классификация. Например все окружности или все точки внутри заданного прямоугольника, то при создании объектов можно их одновременно регистрировать в соответствующих контейнерах.

Простите, многословен. Фантазия. Это довольно специфические области применения.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version