• 具有__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 
  • 相关阅读:
    【POJ2893&HDOJ6620】M × N Puzzle(n*m数码判定)
    idea破解方法
    ORACLE:MERGE INTO
    DOS命令大全
    使用oracle 的 PL/Sql 定时执行一个存储过程
    spring RestTemplate用法详解
    Oracle截取字符串和查找字符串
    PLSQL Developer常用设置及快捷键
    IntelliJ IDEA设置自动导入包
    Git使用详细教程
  • 原文地址:https://www.cnblogs.com/michaely/p/3343178.html
Copyright © 2020-2023  润新知