• 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)
  • 相关阅读:
    190822——喜欢
    190821——彼岸无岸
    190820——随笔
    BLE——协议层次结构
    190817——肖申克的救赎
    190818——人
    190819——皖北部分村落的变迁史
    【转】vfork 和 fork的区别
    C语言文件操作
    【makefile】symbol <函数> : can't resolve symbol 问题分析
  • 原文地址:https://www.cnblogs.com/callyblog/p/11333289.html
Copyright © 2020-2023  润新知