Yanıtlar:
__getitem__
Yöntemi kullanmanız gerekir .
class MyClass:
def __getitem__(self, key):
return key * 2
myobj = MyClass()
myobj[3] #Output: 6
Ve eğer değerleri ayarlayacaksanız, __setitem__
yöntemi de uygulamanız gerekir , aksi takdirde bu gerçekleşir:
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'
Tam olarak aşırı yüklenmek için __setitem__
ve __delitem__
yöntemlerini de uygulamanız gerekir .
Düzenle
Neredeyse unutuyordum ... bir listeyi tamamen taklit etmek istiyorsanız, ihtiyacınız da var __getslice__, __setslice__ and __delslice__
.
Hepsi http://docs.python.org/reference/datamodel.html adresinde belgelenmiştir.
__getitem__
Yöntemi arıyorsunuz . Bkz. Http://docs.python.org/reference/datamodel.html , bölüm 3.4.6
__getslice__,
__setslice__` ve__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__` ve eğer isinstance__delitem__' and test if the argument is of type
dilim, i.e.:
(arg, dilim): ...