जवाबों:
आपको __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, स्लाइस): ...