I can't see why I get an assertion error for the following code. It looks to me like the output from the print statement should be equivalent to the return value of queue_challenge() but not so. Can someone please explain why, and what the correct assertion should be?
from collections import deque
class Queue:
def __init__(self):
self.items = deque()
def is_empty(self):
return not self.items
# return len(self.items) == 0
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
return self.items.popleft()
def size(self):
return len(self.items)
def peek(self):
return self.items[0]
def __str__(self):
return str(self.items)
def queue_challenge():
q = Queue()
q.enqueue("Learning")
q.enqueue("is")
q.dequeue()
q.enqueue("great")
q.enqueue("fun")
q.dequeue()
return q
print(queue_challenge()) # deque(['great', 'fun'])
assert queue_challenge() == deque(['great', 'fun'])
The
__eq__can be overwritten as follows to test for the kind of equality you may be looking for: