TypeError:object不带参数

时间:2016-04-25 01:22:41

标签: python loops iterator generator yield

我正在尝试创建一个使用__iter__()方法作为生成器的代码,但我收到错误消息:

  

TypeError:object()不带参数。

此外,我不确定我的yield函数是否应该在try:或main()函数中调用

我对Python和编码很新,所以任何建议和建议都会非常感激,以便我可以学习。谢谢!

class Counter(object):

    def __init__(self, filename, characters):
        self._characters = characters
        self.index = -1

        self.list = []
        f = open(filename, 'r')
        for word in f.read().split():
            n = word.strip('!?.,;:()$%')
            n_r = n.rstrip()
            if len(n) == self._characters:
                self.list.append(n)

    def __iter(self):
        return self

    def next(self):
        try:
            self.index += 1
            yield self.list[self.index]

            except IndexError:
                raise StopIteration
            f.close()

if __name__ == "__main__":
    for word in Counter('agency.txt', 11):
        print "%s' " % word

2 个答案:

答案 0 :(得分:0)

您错误输入了__init__方法的声明,您键入了:

def __init

而不是:

def __init__ 

答案 1 :(得分:0)

使用yield功能__iter__

class A(object):
    def __init__(self, count):
        self.count = count

    def __iter__(self):
        for i in range(self.count):
            yield i

for i in A(10):
    print i

在您的情况下,__iter__可能看起来像这样:

def __iter__(self):
    for i in self.list:
        yield i