zoukankan      html  css  js  c++  java
  • 具有__iter__ 和next方法的对象叫迭代器

    class stack(object):
         
        def __init__(self):
            self.stack = []
    
        def push(self,str1):
            self.stack.append(str1)
    
        def pop(self):
            return self.stack.pop()
    
        def length(self):
            return len(self.stack)

    应该怎么遍历这个堆栈呢?

    类只有实现了__iter__() 和next()方法(python3改为__next__()),生成的实例才能迭代
    具有__iter__ 和next方法的对象叫迭代器

    python2.7.5的代码

    class stack(object):
        """只有实现了__iter__和next方法的类生成的实例才可以迭代"""
        def __init__(self):
            self.stack = []
    
        def push(self,str1):
            self.stack.append(str1)
    
        def pop(self):
            return self.stack.pop()
    
        def length(self):
            return len(self.stack)
    
        def __iter__(self):
            return self
    
        def __next__(self):
            try:
                return self.stack.pop()
            except IndexError:   
                raise StopIteration   

    python3.3.2的代码

    class stack(object):
        """只有实现了__iter__和next方法的类生成的实例才可以迭代"""
        def __init__(self):
            self.stack = []
        def push(self,str1):
            self.stack.append(str1)
        def pop(self):
            return self.stack.pop()
        def length(self):
            return len(self.stack)
        def __iter__(self):
            return self
        def __next__(self):
            try:
                return self.stack.pop()
            except IndexError:   
                raise StopIteration 
  • 相关阅读:
    Sql inner join
    转:MySQL 的show processlist
    session cookie
    集群和分布式
    设计模式
    Web性能优化——缓存
    关于 java 里面的路径
    1分钟看懂log4j 配置自己想要的日志信息
    spring @bean 的理解
    如何用iptables实现NAT(转)
  • 原文地址:https://www.cnblogs.com/michaely/p/3343178.html
Copyright © 2011-2022 走看看