2015-02-20 2 views
0

Итак, я построил связанный класс очереди в python, который выглядит так.Связанная очередь в python не может определить, если она пуста

class queue: 
    class _Node: 
     def __init__(self, elem, next): 
      self._elem = elem 
      self._next = next 

    def __init__(self): 
     self._rear = None 
     self._front = None 
     self._size = 0 

    def enqueue(self, value): 
     if self.isEmpty: 
      self._front = self._Node(value, None) 
      self._rear = self._front 
      self._size += 1 
      return 
     self._rear._next = self._Node(value, None) 
     self._rear = self._rear._next 
     self._size += 1 
     return 

    def dequeue(self): 
     retVal = self._front._elem 
     self._front = self._front._next 
     self._size -= 1 
     if self.isEmpty: 
      self._rear = None 
     return retVal 

    def __len__(self): 
     return self._size   

    def isEmpty(): 
     return len(self) == 0 

Я использую этот класс, чтобы создать действительно основную очередь печати, которая подается на два принтера. Моя проблема в том, что моя функция isEmpty в классе кажется, что она всегда пуста. Если я добавлю 3 задания на печать, попробуйте их отобразить, он отобразит только последний, потому что функция enqueue считает, что очередь пуста. Я просто не могу понять, почему так нужна всякая помощь.

+0

Определение 'isEmpty()' должно быть 'def isEmpty (self):'. Это, вероятно, не ваша фактическая проблема, но. –

+0

Кроме того, вы проверяете 'self.isEmpty' в' dequeue', а не 'self.isEmpty()'. Первый просто проверяет, существует ли метод 'isEmpty', а не вызывает его и всегда будет истинным. Это может быть вашей реальной проблемой. (То же самое происходит в 'enqueue'.) –

ответ

0

Проблема, с которой вы столкнулись, заключается в том, что вы не вызываете метод, а просто ссылаетесь на логическое значение самого объекта метода, которое всегда истинно. Это должно быть:

if self.isEmpty(): 
+0

Он определяет' __len __() ', который должен работать нормально. –

+0

Спасибо, что очистили его. –

Смежные вопросы