1. ホーム
  2. python

python オブジェクトはアイテムの割り当てをサポートしない

2022-02-18 19:44:03
<パス

まずは以下のコードから。

class Animal(object):
        def __init__(self, name):
                self.name = name


a1 = Animal("panda")

a1['age'] = 12


実行が

a1['age'] = 12

エラーの報告

トレースバック (最も最近の呼び出し):
ファイル "test.py", 行 13, in <\module>
a1['age'] = 12
TypeError: 'Animal'オブジェクトはアイテムの割り当てをサポートしていません。

は、a1 オブジェクトをこの方法で割り当てることができないことを示します。

回避策

クラスに __setitem__ メソッドを定義する必要があります。

class Animal(object):
        def __init__(self, name):
                self.name = name


        def __setitem__(self, k, v):
                self.k = v

        def __str__(self):
                return "name:%s, %s" % (self.name, self.k)


a1 = Animal("panda")

a1['age'] = 12
print a1


再度実行すると
を出力します。

名前:パンダ、12歳

名前と先ほど割り当てた12を印刷します。