Говоря простым языком: я создаю экземпляры класса динамически в цикле for, затем класс определяет несколько атрибутов для экземпляра. Позже мне понадобится найти эти значения в другом цикле for.
Пример кода:
class A:
def __init__(self, name, attr):
self.name=name
self.attr=attr
names=("a1", "a2", "a3")
x=10
for name in names:
name=A(name, x)
x += 1
...
...
...
for name in names:
print name.attr
Как мне создать идентификатор для этих экземпляров, чтобы к ним позже можно было обращаться по «имени»?
Я нашел способ получить это, связав «имя» с местом в памяти:
class A:
instances=[]
names=[]
def __init__(self, name, attr):
self.name=name
self.attr=attr
A.instances.append(self)
A.names.append(name)
names=("a1", "a2", "a3")
x=10
for name in names:
name=A(name, x)
x += 1
...
...
...
for name in names:
index=A.names.index(name)
print "name: " + name
print "att: " + str(A.instances[index].att)
Это привело к тому, что я в течение двух дней рыскал в сети, и мне не удалось найти ответ. Может быть, я не знаю, как правильно задать вопрос, или, может быть, это невозможно сделать (как многие другие посты предлагали).
Теперь этот второй пример работает, и пока я буду его использовать. Я просто думаю, что должен быть более простой способ, чем создание собственного временного словаря индексных чисел, и я надеюсь, что я не потратил 2 дня, чтобы найти ответ, который не существует. У кого-нибудь есть что-нибудь?
Заранее спасибо,
Andy
Обновление: коллега только что показал мне, что он думает, что это самый простой способ, а именно создать реальный словарь экземпляров класса, используя экземпляр "имя" в качестве ключа.