如何在python中创建对象的堆队列?

时间:2013-08-02 06:18:02

标签: python

我想在我在python中创建的类上使用堆队列(http://docs.python.org/2/library/heapq.html):

class Dog:
  def __init__(self, name, age):
    self.name = name
    self.age = age

我想在堆队列中按年龄比较狗。我怎么告诉python按年龄比较我的对象?换句话说,我可以在python中以某种方式编写“比较器”吗?

1 个答案:

答案 0 :(得分:6)

您必须在班级中添加__lt__方法:

def __lt__(self, other):
    return self.age < other.age

如果您想要安全,请添加__eq__方法并使用functools.total_ordering修饰您的课程,以添加其他比较运算符。