1. ホーム
  2. python

[解決済み] 'MyClass' オブジェクトには '__getitem__' という属性がありません。

2022-01-29 19:03:40

質問

このようなクラスがあります。

class MyClass(object):
    def __init__(self, id, a, b, c):
        self.myList     = []
        self.id         = id
        self.a          = a
        self.b          = b
        self.c          = c

    def addData(self, data):
        self.myList.append(data)

メイン・コードでは、MyClass インスタンスのリストである myClassList . ある行では、指定された id はすでに存在しています。私はこのように行っています。

id = 'foo' # in real code is set dynamically 
recent_item = next( (item for item in myClassList if item['id'] == id), None )

そのコードの2行目には、このようなエラーが発生します。

MyClass' オブジェクトに属性がない '__getitem__'

どうすれば直るのですか?

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

item は辞書ではなくクラスなので、メンバーにアクセスするための構文が異なります。アクセス方法 id のようにします。

item.id