1. ホーム
  2. python

[解決済み] 非順序に対するPythonの反復処理

2022-01-29 02:50:48

質問

ノートを作成し、ノートブックに追加するコードを作成しました。このコードを実行すると、Iteration over non-sequence エラーが発生します。

import datetime
class Note:
    def __init__(self, memo, tags):
        self.memo = memo
        self.tags = tags
        self.creation_date = datetime.date.today()

def __str__(self):
    return 'Memo={0}, Tag={1}'.format(self.memo, self.tags)


class NoteBook:
     def __init__(self):
        self.notes = []

     def add_note(self,memo,tags):
        self.notes.append(Note(memo,tags))

if __name__ == "__main__":
    firstnote = Note('This is my first memo','example')
    print(firstnote)
    Notes = NoteBook()
    Notes.add_note('Added thru notes','example-1')
    Notes.add_note('Added thru notes','example-2')
    for note in Notes:
        print(note.memo)

エラーです。

C:\Python27Basics_OOP_formytesting>python notebook.py  
Memo=This is my first memo, Tag=example  
トレースバック (最も最近の呼び出しの最後)。 
  ファイル "notebook.py", 行 27, in   
    for note in Notes:  
TypeError: 非シーケンスに対するイタレーション

どのように解決するのですか?

オブジェクト自体を反復処理しようとしているため、エラーが返されます。オブジェクトの中のリストに対して反復処理を行いたいのです。 Notes.notes (これはやや紛らわしい命名です。ノートブック・オブジェクトのインスタンスに別の名前を使用して、内部リストを区別することができます)。

for note in Notes.notes:
    print(note.memo)