Python bizarre class problem
Question: 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?


Answer: `Queue.PriorityQueue` is not a new-style class, and `super` [only works with
new-style classes](http://docs.python.org/library/functions.html#super). You
must use

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

instead.

