• python基础----__next__和__iter__实现迭代器协议


    #_*_coding:utf-8_*_
    __author__ = 'Linhaifeng'
    class Foo:
        def __init__(self,x):
            self.x=x
    
        def __iter__(self):
            return self
    
        def __next__(self):
            n=self.x
            self.x+=1
            return self.x
    
    f=Foo(3)
    for i in f:
        print(i)
    
    简单示范
    简单示范
    class Foo:
        def __init__(self,start,stop):
            self.num=start
            self.stop=stop
        def __iter__(self):
            return self
        def __next__(self):
            if self.num >= self.stop:
                raise StopIteration
            n=self.num
            self.num+=1
            return n
    
    f=Foo(1,5)
    from collections import Iterable,Iterator
    print(isinstance(f,Iterator))
    
    for i in Foo(1,5):
        print(i)
    View Code
    class Fib:
        def __init__(self):
            self._a=0
            self._b=1
    
        def __iter__(self):
            return self
    
        def __next__(self):
            self._a,self._b=self._b,self._a + self._b
            return self._a
    
    f1=Fib()
    
    print(f1.__next__())
    print(next(f1))
    print(next(f1))
    
    for i in f1:
        if i > 100:
            break
        print('%s ' %i,end='')
    
    斐波那契数列
    斐波那契数列

    笔记:

      1 from collections import Iterable,Iterator
      2 class Foo:
      3     def __init__(self,start):
      4         self.start=start
      5 
      6     def __iter__(self):
      7         return self
      8 
      9     def __next__(self):
     10         return 'aSB'
     11 
     12 
     13 f=Foo(0)
     14 f.__iter__()
     15 f.__next__()
     16 
     17 print(isinstance(f,Iterable))
     18 print(isinstance(f,Iterator))
     19 
     20 print(next(f)) #f.__next__()
     21 print(next(f)) #f.__next__()
     22 print(next(f)) #f.__next__()
     23 
     24 
     25 for i in f: # res=f.__iter__() #next(res)
     26     print(i)
     27 
     28 
     29 
     30 from collections import Iterable,Iterator
     31 class Foo:
     32     def __init__(self,start):
     33         self.start=start
     34 
     35     def __iter__(self):
     36         return self
     37 
     38     def __next__(self):
     39         if self.start > 10:
     40             raise StopIteration
     41         n=self.start
     42         self.start+=1
     43         return n
     44 
     45 f=Foo(0)
     46 
     47 print(next(f))
     48 print(next(f))
     49 print(next(f))
     50 print(next(f))
     51 print(next(f))
     52 print(next(f))
     53 print(next(f))
     54 print(next(f))
     55 print(next(f))
     56 print(next(f))
     57 print(next(f))
     58 print(next(f))
     59 
     60 for i in f:
     61     print('====>',i)
     62 
     63 
     64 
     65 
     66 class Range:
     67     '123'
     68     def __init__(self,start,end):
     69         self.start=start
     70         self.end=end
     71 
     72     def __iter__(self):
     73         return self
     74 
     75     def __next__(self):
     76         if self.start == self.end:
     77             raise StopIteration
     78         n=self.start
     79         self.start+=1
     80         return n
     81 
     82 for i in Range(0,3):
     83     print(i)
     84 
     85 print(Range.__doc__)
     86 
     87 
     88 class Foo:
     89     '我是描述信息'
     90     pass
     91 
     92 class Bar(Foo):
     93     pass
     94 print(Bar.__doc__) #该属性无法继承给子类
     95 
     96 b=Bar()
     97 print(b.__class__)
     98 print(b.__module__)
     99 print(Foo.__module__)
    100 print(Foo.__class__) #?
    笔记
  • 相关阅读:
    ASP.NET页面生命周期总结(完结篇)
    ASP.NET页面生命周期总结(2)
    ASP.NET页面生命周期总结(1)
    springboot-简介
    python-day2
    python-day1
    jsoup解析页面
    httpclient模拟浏览器
    httpclient
    变量名和函数名重复的话
  • 原文地址:https://www.cnblogs.com/wangyongsong/p/6763064.html
Copyright © 2020-2023  润新知