Python迭代器测试错误:TypeError:此构造方法不接受任何参数

时间:2018-11-03 17:16:12

标签: python iterator

试图了解迭代器的工作方式。以下是我的测试,但在Iter(self)中出现错误-TypeError:此构造方法不接受任何参数。谁能帮我?非常感谢。

class TestIter:
    def __init__(self, value):
        self.value = value

    def __iter__(self):
        return Iter(self)


class Iter:
    def __int__(self, source):
        self.source = source

    def next(self):
        if self.source.value >= 10:
            raise StopIteration
        else:
            self.source.value += 1
            return self.source.value

test = TestIter(5)
for i in test:
    print(i)

2 个答案:

答案 0 :(得分:0)

您的代码中有错字。在您的__int__中检查__init__Iter

由于输入错误,您没有定义__init__,因此使用了默认值,它实际上没有参数。

答案 1 :(得分:0)

  

例外TypeError

     
    

在将操作或功能应用于     不适当类型的对象。关联值是一个字符串     提供有关类型不匹配的详细信息。

  

在您的情况下,应该是__int____init__。只是建议,与其使用这种复杂的方法来构建迭代器,不如简单地使用一个类并直接调用它。

示例:

class Count:

    """Iterator that counts upward forever."""

    def __init__(self, start):
        self.num = start

    def __iter__(self):
        return self

    def __next__(self): // This will go to infinity but you can applyyour own logic to
        num = self.num
        self.num += 1
        return num

可以通过以下任一方式进行呼叫:

>>> c = Count()
>>> next(c)
0

或者这个:

>>> for n in Count():
...     print(n)
...
0
1
2
(this goes on forever)