Pythonのクラスの[]
演算子(添字表記)をオーバーライドするメソッドの名前は何ですか?
__getitem__
メソッド を使用する必要があります。
class MyClass:
def __getitem__(self, key):
return key * 2
myobj = MyClass()
myobj[3] #Output: 6
また、値を設定する場合は、 __setitem__
method も実装する必要があります。実装しないと、これが発生します。
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'
完全にオーバーロードするには、__setitem__
メソッドと__delitem__
メソッドも実装する必要があります。
編集
リストを完全にエミュレートする場合は、ほとんど忘れていました... __getslice__, __setslice__ and __delslice__
も必要です。
すべてが http://docs.python.org/reference/datamodel.html に文書化されています
__getitem__
メソッドを探しています。 http://docs.python.org/reference/datamodel.html 、セクション3.4.6を参照してください