I am a wring a custom class called queue that uses iterator. I have an Iterator class in a seperate file called iterator.py. I get the error below when I try to iterate using for loop.
 from iterator import Iterator
    class Abstractstruc(object):
        def __init__(self):
            assert False
        def __str__(self):
            return "<%s: %s>" %(self.__class__.__name__,self.container)
class Queue(Abstractstruc,Iterator):
    def __init__(self, objecttype=object):
        self.container=[]
        self.size=0
    def add(self, data):
        self.container.append(data)
    def  remove(self):
        self.container.pop(0)
    def __getitem__(self,index):
        return self.container[index]
    def __iter__(self):
        return Iterator(self.container)
if __name__=='__main__':
    q=Queue(int)
    q.add(5)
    q.add(4)
    q.add(6)
    for i in q:
       print i
iterator.py
class Iterator(object):
    def __init__(self, wrapped):
        self.wrapped = wrapped
        self.offset = 0
    def __next__(self):
        if self.offset>=len(self.wrapped):
            raise StopIteration
        else:
            item = self.wrapped[self.offset]
            self.offset+=1
            return item
I get this error message
<Queue: [5, 4, 6]>
<Queue: [4, 6]>
4
Traceback (most recent call last):
  File "queue.py", line 78, in <module>
    for i in q:
TypeError: iter() returned non-iterator of type 'Iterator'
I do not understand why it is not returning an iterator. what fixes needed here?
 
     
    