Pythonで[]演算子をオーバーライドするにはどうすればいいですか? 質問する

Pythonで[]演算子をオーバーライドするにはどうすればいいですか? 質問する

[]Python のクラスの演算子 (添え字表記) をオーバーライドするメソッドの名前は何ですか?

ベストアンサー1

使用する必要があるのは__getitem__方法

class MyClass:
    def __getitem__(self, key):
        return key * 2

myobj = MyClass()
myobj[3] #Output: 6

値を設定する場合は、__setitem__方法そうでなければ、次のことが起こります:

>>> myobj[5] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'

おすすめ記事