मैं पाइथन डॉक्स में __getitem__
के अधिकांश दस्तावेज और स्टैक ओवरफ्लो में भी गया हूं, इसलिए यह एक डुप्लिकेट प्रश्न नहीं है। लेकिन मैं अभी भी इसका अर्थ समझने में असमर्थ हूं।__getitem__ विधि को समझना
तो मैं समझ सकता हूं कि __getitem__
self[key]
जैसी कॉल लागू करने के लिए उपयोग किया जाता है। लेकिन इसका क्या उपयोग है?
चलें कहते हैं कि मैं एक अजगर वर्ग को इस तरह से परिभाषित किया गया है:
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def __getitem__(self,key):
print ("Inside `__getitem__` method!")
return getattr(self,key)
p = Person("Subhayan",32)
print (p["age"])
यह परिणाम देता है के रूप में उम्मीद। लेकिन पहली जगह __getitem__
का उपयोग क्यों करें? मैंने यह भी सुना है कि पाइथन आंतरिक रूप से __getitem__
पर कॉल करता है। लेकिन ऐसा क्यों करता है?
क्या कोई इसे अधिक विस्तार से समझा सकता है?
यह एक उदाहरण के उपयोग के लिए ब्याज का हो सकता है: [सही तरीके से उपclass कैसे करें और __getitem__ और __setitem__ को ओवरराइड करें ] (http://stackoverflow.com/questions/2390827/how-to-properly-subclass-dict-and-override-getitem-setitem) – roganjosh
आपके उदाहरण में '__getitem__' उपयोग बहुत समझ में नहीं आता है, लेकिन कल्पना करें कि आपको टी की जरूरत है o एक कस्टम सूची- या शब्दकोश-जैसी कक्षा लिखें, जिसे मौजूदा कोड के साथ काम करना है जो '[]' का उपयोग करता है। यह एक ऐसी स्थिति है जहां '__getitem__' उपयोगी है। –