2016-04-25 23 views
0

を取りませんtry内で呼び出す必要があります:main()関数内はTypeError:</p> <blockquote> <p>TypeError: object() takes no parameters.</p> </blockquote> <p>はまた、私は私の歩留まり機能するかどうかわからない午前:オブジェクトは、私は発電機として<code>__iter__()</code>方法を利用したコードを作成しようとしているが、私はというエラーを取得しています何のパラメータ

私はかなりPythonとコーディングに新しいので、任意の提案とアドバイスは、私が学ぶことができるように非常に高く評価されるでしょう。ありがとう!あなたが__init__メソッドの宣言をミスタイプし

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 
+0

は、エラーのトレースバックを記載してくださいを、それが役立ちます。 – Roberto

+0

...あなたの '__init'メソッドには最後に2つのアンダースコアがありません。それは '__init__'です。エラーが発生する可能性があります。 – Roberto

+1

また、あまりにもインデントがあります。 – hayavuk

答えて

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 
お使いの場合には10

は、__iter__は多分、このようなものになります。

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

、あなたが入力した:

def __init 

の代わりに:

def __init__ 
+0

ああ、私はそれを逃したとは思わない。しかし、この問題は単に間違ったタイプミスであったことを嬉しく思います。タイプエラー: 'Counter'オブジェクトは反復可能ではありません。思考? –

+1

@ D.Lopez 'def __iter__'と同じこと – user312016

関連する問題

 関連する問題