Jawaban:
Anda perlu menggunakan __getitem__
metode ini .
class MyClass:
def __getitem__(self, key):
return key * 2
myobj = MyClass()
myobj[3] #Output: 6
Dan jika Anda akan menetapkan nilai, Anda harus menerapkan __setitem__
metode ini juga, jika tidak, ini akan terjadi:
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'
Untuk membebani sepenuhnya, Anda juga perlu menerapkan __setitem__
dan __delitem__
metode.
sunting
Saya hampir lupa ... jika Anda ingin sepenuhnya meniru daftar, Anda juga perlu __getslice__, __setslice__ and __delslice__
.
Semuanya didokumentasikan di http://docs.python.org/reference/datamodel.html
Anda mencari __getitem__
metodenya. Lihat http://docs.python.org/reference/datamodel.html , bagian 3.4.6
__getslice__,
__setslice__` dan__delslice__' have been deprecated for the last few releases of ver 2.x (not sure exactly when), and are no longer supported in ver 3.x. Instead, use
__getitem__.
__setitem__` dan__delitem__' and test if the argument is of type
iris, i.e.:
jika isinstance (arg, slice): ...