Python defined peek iterator, get the error "'list' object is not callable" -


i try defined peek iterator class manually, peek function return iterator pointer value, not move on. generator class has next() , has_next() function, , peekiterator class add peek() function, when call peek function, error:

traceback (most recent call last):   file "iterater.py", line 63, in <module>     test.peek() typeerror: 'list' object not callable 

could please check what's issue here ? thank !

class generator:     def __init__(self, n):         self.n = n         self.i = 0      def __iter__(self):         return self      def next(self):         if self.has_next():             = self.i             self.i += 1             return         else:             print "there no next value."             return none             #raise stopiteration()      def has_next(self):         if self.i >= self.n:             return false         else:             return true class peekiterator:     def __init__(self, generator):         self.peek = []         self.generator = generator      def __iter__(self):         return self      def peek(self):         if self.peek == []:             if self.has_next():                 cur = self.generator.next()                 self.peek.append(cur)                 print "cur: ", cur                 return cur         else:             return self.peek[-1]      def has_next(self):         if not self.generator.has_next() , not self.peek:             return false         else:             return true      def get_next(self):         if not self.peek:             if self.has_next():                 return self.generator.next()         else:             ret = self.peek[-1]             self.peek.pop()             return ret  gen = generator(5) test = peekiterator(gen) print test.has_next() print test.get_next() print test.get_next() test.peek() 

~

class peekiterator:     def __init__(self, generator):         self.peek = [] #...     def peek(self): 

you have 2 peeks here - 1 method, , 1 list. 1 overwrite other. when test.peek(), python thinks you're referring list , not method.

consider renaming 1 of these else. ex. change list self.items.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -