पाइथन जादू विधियों को समझने के लिए निम्न प्रोग्राम का उद्देश्य पायथन जेनरेटर और इटरेटर कार्यान्वयन सीखना है।मेरे कस्टम इटरेटर के लिए iteritems फ़ंक्शन को कार्यान्वित करें?
मैं iteritems()
फ़ंक्शन को कार्यान्वित कर रहा हूं। साथ ही, मैं जानना चाहता हूं कि मैं सही दिशा में जा रहा हूं या मैं पाइथन जादू विधियों को समझने में अवधारणात्मक रूप से गलत हूं।
import random
class Random(object):
""" generate randomised int of specified length --> [r1, r2, r3....] """
def __init__(self, length = 1, rand_range = 100):
self.index = 0
self.generated_range = []
self.length = length if str(length).isdigit() else 1
self.rand_range = rand_range if str(rand_range).isdigit() else 100
def __iter__(self): return self
def next(self):
if self.index < self.length:
item = random.randrange(0, self.rand_range)
self.generated_range.append(item)
self.index += 1
return item
raise StopIteration
def __eq__(self, obj):
if self.length == obj.length and self.rand_range == obj.rand_range:
return True
return False
def __len__(self):
return self.length
def __contains__(self, item):
if not self.index == self.length:
while self.next(): continue
if item in self.generated_range:
return True
return False
def __getitem__(self, key):
if key in self.generated_range:
return key * 100
raise KeyError
def __setitem__(self, key, value):
raise NotImplemented
def __delitem__(self, key):
raise NotImplemented
def iteritems(self):
if not self.index == self.length:
while self.next(): continue
for item in self.generated_range:
yield item
if __name__ == '__main__':
r1 = Random(10)
print [ r for r in r1]
print 10 in r1
r2 = Random(20)
print r2.iteritems()