2012-02-25 5 views
16

वापस करें मैं अनिवार्य रूप से एक कंटेनर ऑब्जेक्ट को कार्यान्वित कर रहा हूं (हालांकि इसमें इसका कुछ तर्क है)। मैं इस वर्ग में एक क्षेत्र में वस्तुओं को फिर से भरने में सक्षम होना चाहता हूं (जो सिर्फ एक सादा सूची है)। मैं फिर से लागू करना चाहिए __iter__ और next मेरी कक्षा के लिए या यह सूची के इटरेटर वापस जाने के लिए है, इसलिए की तरह स्वीकार्य है:पायथन - __iter__ लागू करें या एक सूची __iter__

class X: 

    def __init__(self): 
     self.list = [] 

    def __iter__(self): 
     return self.list.__iter__() 

मैं एक छोटे से अनिश्चित हूँ अगर यह किसी भी अवांछनीय व्यवहार को बढ़ावा मिलेगा।

उत्तर

22

अंतर्निहित list प्रकार के पुनरावर्तक का उपयोग करना ठीक है। मैं, __iter__() स्पष्ट रूप से कॉल करने के लिए नहीं सुझाव देंगे हालांकि, बल्कि निर्मित समारोह iter() का उपयोग करें:

def __iter__(self): 
    return iter(self.list) 

एक अन्य विकल्प list से X प्राप्त करने के लिए हो सकता है। (पायथन 2.x में, आपको कम से कम object से प्राप्त करना चाहिए।)

संबंधित मुद्दे