[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