yassin
yassin

Reputation: 6707

Python bizarre class problem

I have the following piece of code where I try to override a method:

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

However, when I run it I get TypeError exception:

super() argument 1 must be type, not classobj

What is the problem?

Upvotes: 5

Views: 294

Answers (1)

unutbu
unutbu

Reputation: 880777

Queue.PriorityQueue is not a new-style class, and super only works with new-style classes. You must use

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

instead.

Upvotes: 7

Related Questions