जवाबों:
आपको __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__'
इसे पूरी तरह से अधिभारित करने के लिए आपको __setitem__और __delitem__विधियों को लागू करने की भी आवश्यकता है ।
संपादित करें
मैं लगभग भूल गया ... यदि आप पूरी तरह से एक सूची का अनुकरण करना चाहते हैं, तो आपको भी आवश्यकता है __getslice__, __setslice__ and __delslice__।
Http://docs.python.org/reference/datamodel.html में सभी दस्तावेज हैं
आप __getitem__विधि खोज रहे हैं । Http://docs.python.org/reference/datamodel.html , अनुभाग 3.4.6 देखें
__getslice__,__setslice__` और__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__` और__delitem__' and test if the argument is of typeस्लाइस, i.e.:यदि आइंस्टीन (arg, स्लाइस): ...