2012-04-04 6 views
2

Ich habe gelernt, mit Python jetzt für eine Weile zu programmieren, und mein aktuelles Projekt ist ein Download-Manager mit einer in wxPython geschriebenen GUI. Ich habe DownloadThreads, von threading.Thread vererben, dass ich eine variierende Menge an instanziiert:Zugriff auf Objekte, die nicht an eine Variable in Python gebunden sind

for i in xrange(self.thread_count): 
    DownloadThread(self.queue, self.status, self.save_dir, i).start() 

Da die Anzahl der Threads, ich werde zu erschaffen nicht festgelegt ist, kann ich nicht zuordnen, die DownloadThread Objekte zu Variablen, so kann ich nicht sehen, wie auf ihre Methoden, wie x.isAlive() zugreifen. Ich habe darüber nachgedacht, Variablen dynamisch zu erstellen, aber etwas scheint mir eine wirklich schlechte Idee zu sein. Wie würde ich auf diese "anonymen" Objekte (Terminologie?) Zugreifen, oder gehe ich das falsch an? Danke fürs Lesen, Entschuldigung, wenn das wirklich einfach/offensichtlich ist.

+0

Um ein Objekt zugreifen Sie sie binden müssen, ist es das gleiche in jeder Sprache, die ich kenne. Anonyme Dinge sind für den einmaligen Gebrauch und wegwerfen. – Dikei

Antwort

3

Die einfachste Sache wäre alles in einer Liste Threads zu halten:

self.threads = [] 
for i in xrange(self.thread_count): 
    self.threads.append(DownloadThread(self.queue, self.status, self.save_dir, i)) 
    self.threads[i].start() 
+0

Ich glaube nicht wirklich, dass das Listenverständnis dies klarer macht. –

+0

Vielen Dank, das ist die Art von was ich suchte. – muskrat

+0

@Lattyware ok, verwendet * reguläre * Iterationssyntax – kojiro