2011-06-26 10 views
18

में सूची की तरह सूचकांक पहुँच लागू मैं सरणी की तरह सिंटैक्स का उपयोग एक अजगर वस्तु में से कुछ मूल्यों उपयोग करने में सक्षम होना चाहते हैं, अर्थात्:अजगर

obj = MyClass() 
zeroth = obj[0] 
first = obj[1] 

यह संभव है? यदि हां, तो आप इसे पाइथन कक्षा में प्रश्न में कैसे कार्यान्वित करते हैं?

+2

जाहिर है, उन googling के लिए, इसे 'अनुक्रमण' कहा जाता है। – PeterJCLaw

+0

जब तक कि पाइथन में सूचियां नहीं हैं (सुनिश्चित नहीं है - मैं शायद ही कभी इसका उपयोग करता हूं), शायद आपको सूची के बजाय शीर्षक में अनुक्रमण करना चाहिए? –

+1

@Merlyn, सूचियां वास्तव में इस तरह हैं, और अधिक। वैसे भी जोड़ा गया। – PeterJCLaw

उत्तर

30

आपको __getitem__, __setitem__, और __delitem__ लिखने या ओवरराइड करने की आवश्यकता है।

उदाहरण के लिए

तो:

class MetaContainer(): 
    def __delitem__(self, key): 
     self.__delattr__(key) 
    def __getitem__(self, key): 
     return self.__getattribute__(key) 
    def __setitem__(self, key, value): 
     self.__setattr__(key, value) 

यह एक बहुत ही साधारण क्लास कि उसके गुण को अनुक्रमित उपयोग की अनुमति देता है।

2

__getitem__ और __setitem__ विधियों का उपयोग करें।

class MyClass: 
    def __getitem__(self, key): 
     return some_value_related_to_key 

    def __setitem__(self, key, value): 
     # set value (if needed)