Python奇怪的类问题

时间:2010-09-13 10:11:28

标签: python override

我有以下代码,我尝试覆盖一个方法:

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

然而,当我运行它时,我得到TypeError例外:

super() argument 1 must be type, not classobj

有什么问题?

1 个答案:

答案 0 :(得分:7)

Queue.PriorityQueue不是新式课程,super only works with new-style classes。你必须使用

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

代替。