Mục tiêu của chương trình sau đây là tìm hiểu về các trình tạo python và thực thi trình lặp để hiểu các phương thức ma thuật Python.Thực hiện chức năng iteritems cho trình vòng lặp tùy chỉnh của tôi?
Tôi đang gặp sự cố khi triển khai chức năng iteritems()
. Ngoài ra, tôi muốn biết liệu tôi có đi đúng hướng hay tôi không hiểu sai về phương pháp ma thuật python.
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()