मैंने एक ऑब्जेक्ट ऑब्जेक्ट ए बनाया है जिसमें अन्य ऑब्जेक्ट्स की एक सूची है। मैं सूची में किसी विशेष ऑब्जेक्ट को स्वचालित रूप से छोड़ने में सक्षम होना चाहता हूं जब ऑब्जेक्ट ए को लूप में उपयोग किया जाता है तो खराब चिह्नित किया जाता है।अपनी प्री-पूछताछ स्थिति को बदलने के बिना पाइथन में एक पुनरावर्तक से पूछताछ कैसे करें
class A():
def __init__(self):
self.Blist = [B(1), B(2), B(3)] #where B(2).is_bad() is True, while the other .is_bad() are False
def __iter__(self):
nextB = iter(self.Blist)
#if nextB.next().is_bad():
# return after skip
#else:
# return nextB
हालांकि, मैं समझ नहीं सशर्त है कि ऊपर छद्म कोड में टिप्पणी की है यात्रा लंघन के बिना, पूछा लिखने के लिए कैसे (किसी और खंड विफल रहता है)
धन्यवाद!
आप अपने चरमपंथियों को 'peek()' फ़ंक्शन वाले ऑब्जेक्ट्स में एन्सेप्लेट कर सकते हैं और अगले ओवरराइड()। इसमें एक स्टेट वैरिएबल होना चाहिए जो ट्रैक को ट्रैक करता है जिसे सबसे हाल ही में, अगली() या peek() कहा जाता है। अगर अगली() को अपने आप के बाद बुलाया जाता है, तो इसे अगले() को encapsulated ऑब्जेक्ट पर कॉल करना चाहिए, परिणाम वापस कर देना चाहिए और उसे बफर में भी स्टोर करना चाहिए। अगर इसे एक चोटी के बाद बुलाया गया था() इसे बफर वापस करना चाहिए। Peek() हमेशा encapsulated अगले() को कॉल करें, इसे वापस करें और इसे बफर() में संग्रहीत करें। –