title: Min/Max Heap implementation in Python
body: <p>This is my implementation of a MinHeap and MaxHeap in python. This uses a comparator to reverse the sequence of storage in the MaxHeap</p>
  
  <pre><code>import heapq
  
  
  class MinHeap:
      def __init__(self):
          self.heap = []
  
      def push(self, item):
          heapq.heappush(self.heap, item)
  
      def pop(self):
          return heapq.heappop(self.heap)
  
      def peek(self):
          return self.heap[0]
  
      def __getitem__(self, item):
          return self.heap[item]
  
      def __len__(self):
          return len(self.heap)
  
  
  class MaxHeap(MinHeap):
      def push(self, item):
          heapq.heappush(self.heap, Comparator(item))
  
      def pop(self):
          return heapq.heappop(self.heap)
  
      def peek(self):
          return self.heap[0]
  
      def __getitem__(self, i):
          return self.heap[i].val
  
  
  class Comparator:
      def __init__(self, val):
          self.val = val
  
      def __lt__(self, other):
          return self.val &gt; other
  
      def __eq__(self, other):
          return self.val == other
  
  
  
  
  if __name__ == '__main__':
      max_heap = MaxHeap()
      max_heap.push(12)
      max_heap.push(3)
      max_heap.push(17)
      print(max_heap.pop())
  </code></pre>
  
  <p>The MinHeap seems to work fine, however the MaxHeap throw up the following error.</p>
  
  <pre><code>&lt;__main__.Comparator object at 0x10a5c1080&gt;
  </code></pre>
  
  <p>I don't quite seem to understand what am I doing wrong here. Can someone help me with this.</p>