zoukankan      html  css  js  c++  java
  • python __iter__和__getitem__区别

    __getitem__

    单独实现这个魔法函数,可以让这个类成为一个可迭代的对象,并且可以通过使用下标获取类中元素值下标的元素

    class Library(object):
        def __init__(self):
            self.books = [1, 2, 3]
            self.index = -1
    
        def __getitem__(self, i):
            return self.books[i]
    
        # def __iter__(self):
        #     return self
        # #
        # def __next__(self):
        #     self.index += 1
        #     if self.index > len(self.books)-1:
        #         raise StopIteration()
        #     return self.books[self.index]
    
    
    l = Library()
    print(l[1])
    for i in l:
        print(i)

    __iter__

    这个是返回一个可迭代的对象,如果一个类实现了这个魔法函数,那么这个类就是可迭代对象,并且实现了__next__这个魔法函数的话,可以通过for循环遍历;__next__如果单独实现了这一个魔法函数,只能通过next()调用

    class Library(object):
        def __init__(self):
            self.books = [1, 2, 3]
            self.index = -1
    
        # def __getitem__(self, i):
        #     return self.books[i]
    
        def __iter__(self):
            return self
        # #
        def __next__(self):
            self.index += 1
            if self.index > len(self.books)-1:
                raise StopIteration()
            return self.books[self.index]
    
    
    l = Library()
    # print(l[1])
    print(next(l))
    for i in l:
        print(i)
  • 相关阅读:
    正则表达式(转)
    Collections中的shuffle()方法
    Fermat定理
    哈希算法(转)
    Hungarian method (匈牙利算法)----解决指派问题(转)
    蒙塔卡洛模拟
    线程的礼让
    线程间的沟通
    安装rlwrap
    yum切到光盘源
  • 原文地址:https://www.cnblogs.com/callyblog/p/11333289.html
Copyright © 2011-2022 走看看