我是一般的编程新手,我需要一些帮助才能访问以前创建的Class实例。我做了一些搜索,但我找不到任何东西......也许只是因为我不应该尝试这样做。
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”上调用一个函数,我该怎么办? 谢谢,雨果
答案 0 :(得分: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)