2010-09-13 8 views
5

je la pièce suivante de code où je tente de passer outre une méthode:Python problème de classe bizarre

import Queue 
class PriorityQueue(Queue.PriorityQueue): 
    def put(self, item): 
     super(PriorityQueue, self).put((item.priority, item)) 

Cependant, quand je le lance-je obtenir TypeError exception:

super() argument 1 must be type, not classobj 

Quelle est la problème?

Répondre

7

Queue.PriorityQueue n'est pas une nouvelle classe de style, et superonly works with new-style classes. Vous devez utiliser

import Queue 
class PriorityQueue(Queue.PriorityQueue): 
    def put(self, item): 
     Queue.PriorityQueue.put(self,(item.priority, item)) 

à la place.

+0

Parfait. Merci beaucoup! – yassin

+2

en fait, vous devrez également passer 'self' explicitement: Queue.PriorityQueue.put (self, (item.priority, item)) –

+0

@Ivo: Oui; Merci pour la correction! – unutbu