Anonyme Klassen?

29/09/2009 - 14:34 von Ole Streicher | Report spam
Hallo,

Ich habe manchmal Code wie den folgenden:

class Example:
def something(self, par):
class MyThread(threading.Thread):
def run(myself):
self.so_something(par)
MyThread().start()

def do_something(self, par):
...

Das sieht relativ umstàndlich aus. Gibt es sowas wie anonyme Klassen,
sodass ich das àhnlich wie in Java ohne eine Klasse "MyThread" schreiben
kann?

class Example {
void something(final Object par) {
(new Thread() {
public void run() {
do_something(par);
}
}).start();
}
}

Oder wie ist der eleganteste Way Of Python, das Obige zu beschreiben?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Thomas Rachel
29/09/2009 - 15:21 | Warnen spam
Ole Streicher schrieb:

class Example:
def something(self, par):
class MyThread(threading.Thread):
def run(myself):
self.so_something(par)
MyThread().start()

def do_something(self, par):
...

Das sieht relativ umstàndlich aus.



Ja. Einfacher wàre (in diesem Spezialfall):

class Example:
def something(self, par):
threading.Thread(target=self.do_something,args=(par,)).start()
def do_something(self, par):
...

Gibt es sowas wie anonyme Klassen,
sodass ich das àhnlich wie in Java ohne eine Klasse "MyThread" schreiben
kann?



Im allgemeinen ließe sich hier durchaus auch was bauen wie

def wrapper(a,b,c):
class Temp(object):
...


- was dann zu einem vereinfachten Aufruf führt.

Bei konkreter Aufgabenstellung gerne mehr; zu der Threadinggeschichte
hab ich ja schon oben geschrieben, wie es gescheit geht.


Thomas

Ähnliche fragen