Python3访问以前创建的对象

时间:2014-02-18 03:06:22

标签: python-3.x

我是一般的编程新手,我需要一些帮助才能访问以前创建的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”上调用一个函数,我该怎么办? 谢谢,雨果

1 个答案:

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