[Python-de] Designfrage: Von list ableiten?
Florian Lindner
mailinglists at xgm.de
So Jun 12 23:29:04 CEST 2011
Hallo,
ich habe eine Klasse JobQueue, die eigentlich eine Liste mit ein paar
zusätzlichen Methoden ist:
Voreinstellung fürs Sortieren:
def sort(self, reverse = False):
""" Sort by priority """
self._queue.sort(key = lambda a: a.prio, reverse=reverse)
Hinzufügen:
def put(self, job):
job.jid = gen_jid()
self._queue.append(j)
return job.jid
filtern:
def running_jobs(self):
self.sort()
return [job for job in self._queue if job.running]
usw.
Also nichts großartiges. Der Benutzer der Klasse soll auch problemlos an die
verwaltete Liste selber kommen (hier self._queue).
Spricht nun irgendwas dagegen die Klasse von list abzuleiten und selber eine
Liste zu sein?
Damit das Verhalten möglichst wenig beeinflußt wird, würde ich sort so
schreiben:
def sort(self, key = lambda a: a.prio, reverse = False):
""" Sort by priority """
super(JobQueue, self).sort(key, reverse)
(geht das? Einen lambda Ausdruck als default Argument?)
Da ich für alle neuen Jobs in der Queue selber eine ID generiere (siehe put())
muss/würde ich gerne garantieren, dass das für alle neu hinzugefügten ebenso
ist. Reicht es dafür append() zu überschreiben?
Effizienz spielt bei der ganzen Sache keine Rolle, die jeweiligen Jobs haben
Rechenzeiten von 1 bis mehreren Tagen, da tut sich nicht viel... ;-)
Mich würde es interessieren, ob es da noch irgendwelche versteckten Probleme
gibt? Und was prinzipiell Eure Meinung dazu ist.
Grüße,
Florian
Mehr Informationen über die Mailingliste python-de