python __iter__和__getitem__区别

柔情痞子 提交于 2019-11-26 21:02:56

__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)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!