把函数 __iter__(self) 注释掉也能正常运行?那视频中写这个函数起到了什么作用?不懂

把函数 __iter__(self) 注释掉也能正常运行?那视频中写这个函数起到了什么作用?不懂

class PowNum(object):
    sum = 0

    # def __iter__(self):
    # 
    #     return  self


    def __next__(self):
        self.sum += 1
        return self.sum * self.sum


if __name__ == "__main__":

    po = PowNum()
    print(po.__next__())
    print(po.__next__())
    print(po.__next__())
    print(po.__next__())


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
慕猿梦 2019-03-31 13:36:00

同学,你好,虽然缺少了__iter__(self)也能正常运行,但是缺少了__iter__(self)方法之后这个实例对象po就不是个迭代器了,可以用下列代码判断是否是迭代器:

使用isinstance(po,Iterator)方法,可以判断该po是否是迭代器,如果返回True,则是迭代器,否则则不是,包含__iter__方法和__next__方法是迭代器

from collections import Iterator
class PowNum(object):
    sum = 0
    # def __iter__(self):
    #
    #     return  self
    def __next__(self):
        self.sum += 1
        return self.sum * self.sum
if __name__ == "__main__":
    po = PowNum()
    print(isinstance(po,Iterator))
    print(po.__next__())
    print(po.__next__())
    print(po.__next__())
    print(po.__next__())

如果我的回答解决了你的疑惑,欢迎采纳!!祝学习愉快~~


  • 既然已经达到了效果,是不是迭代器有什么区别?
    2019-09-24 22:16:20
  • 同学你好: 首先:可迭代对象以及迭代器是可以使用for循环遍历的。迭代器一定是可迭代对象,可迭代对象不一定是迭代器。迭代器中定义了__iter__()以及__next__()方法。同学可以将上面代码中的po对象使用for循环进行遍历,测试是否可以循环遍历。for i in po: print(i)。学习愉快^_^
    2019-09-25 10:08:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师