2014-02-18 3 views
0

Я новичок в программировании вообще, и мне нужна помощь для доступа к ранее созданному экземпляру класса. Я сделал поиск по SO, но я ничего не мог найти ... Возможно, это просто потому, что я не должен пытаться это сделать.Python3 доступ к ранее созданному объекту

for s in servers: 
    c = rconprotocol.Rcon(s[0], s[2],s[1]) 
    t = threading.Thread(target=c.connect) 
    t.start() 
    c.messengers(allmessages, 10) 

Теперь, что я могу сделать, если хочу вызвать функцию на «c»? Спасибо, Hugo

ответ

0

Вы создаете несколько различных объектов, которые вы на короткое время называете c, когда вы проходите цикл. Если вы хотите иметь доступ к более чем последнему из них, вам нужно сохранить их где-то, что не будет перезаписано. Вероятно, наилучшим подходом является использование списка для хранения последовательных значений, но в зависимости от ваших конкретных потребностей может также иметь смысл другая структура данных (например, используя словарь, вы можете искать каждое значение по определенному ключу).

Вот тривиальный корректировка текущего кода, который сохранит c значения в списке:

c_list = [] 
for s in servers: 
    c = rconprotocol.Rcon(s[0], s[2],s[1]) 
    t = threading.Thread(target=c.connect) 
    t.start() 
    c.messengers(allmessages, 10) 
    c_list.append(c) 

Позже вы можете получить доступ к любому из c значений с c_list[index], или итерацию с for c in c_list.

Чуть более версия Pythonic может использовать список понимание, а не append, чтобы создать список (это также показывает, что петля над c_list позже один может выглядеть):

c_list = [rconprotocol.Rcon(s[0], s[2],s[1]) for s in servers] 
for c in c_list: 
    t = threading.Thread(target=c.connect) 
    t.start() 
    c.messengers(allmessages, 10) 
Смежные вопросы