相关疑难解决方法(0)

构建一个基本的Python迭代器

如何在python中创建迭代函数(或迭代器对象)?

python iterator object

545
推荐指数
8
解决办法
34万
查看次数

为什么类需要__iter __()来返回迭代器?

为什么类需要定义__iter__()返回self,以获取类的迭代器?

class MyClass:
    def __init__(self):
        self.state = 0

    def __next__(self):
        self.state += 1
        if self.state > 4:
            raise StopIteration
        return self.state

myObj = MyClass()
for i in myObj:
    print(i)
Run Code Online (Sandbox Code Playgroud)

控制台日志:

Traceback (most recent call last):
   for i in myObj:
TypeError: 'MyClass' object is not iterable
Run Code Online (Sandbox Code Playgroud)

答案/sf/answers/691898161/,说

迭代器是具有next(Python 2)或__next__(Python 3)方法的对象.

添加以下内容的任务:

def __iter__(self):
   return self
Run Code Online (Sandbox Code Playgroud)

是返回定义方法的迭代器或类的对象__next__().

但是,当MyClass在myObj = MyClass()行中实例化时,不是返回MyClass对象(定义__next__()方法)的任务,而是由__new__()MyClass实例化了吗?

类定义__next__()方法的对象不是自己的迭代器吗?

我已经研究了问题__iter__方法中返回self的用途是什么?构建一个基本的Python迭代器,但我仍然无法理解 …

python iterator class python-3.x

9
推荐指数
2
解决办法
3610
查看次数

标签 统计

iterator ×2

python ×2

class ×1

object ×1

python-3.x ×1