[Python-Dev] Re: heapq method names

Tim Peters tim.one@comcast.net
Mon, 26 Aug 2002 12:47:35 -0400


[Raymond Hettinger, on
 """
 import heapq

 class Heap(list):
     def __init__(self, iterable=[]):
         self.extend(iterable)
     push    = heapq.heappush
     popmin  = heapq.heappop
     replace = heapq.heapreplace
     heapify = heapq.heapify
 """
]

> And perhaps:
>    def __iter__(self):
>        while True:
>             yield self.popmin()

If we were trying to hide the list nature, yes, but I don't think so if the
intent is that a heapq heap *is* a list with a few extra methods.  For
example, I know I've already done

    max(h)

at least once for a Heap of this type, with the list meaning in mind, and it
would have been at best irritating if that had emptied the heap as a side
effect.  Renaming __iter__ to heapiter would be cool, though!