Junior — Middle
Өз классынын ичинде ыкмаларды кантип ишке ашыруу керек, анын кайталануусун камсыз кылуу үчүн?
sobes.tech AI
AIден жооп
Python-да өзүңүздүн классыңызды кайталануучу кылуу үчүн, __iter__ методун ишке ашырышыңыз керек, ал қайталануучу объектти кайтарат. Кайталануучу — бул __next__ методу бар объект, ал кийинки элементти кайтарат же StopIteration ката чыгарат, эгер элементтер бүтүп калса.
Жөнөкөй жол — классты дагы кайталануучу кылуу, эки методду да ишке ашыруу:
class MyIterable:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
self.index = 0 # жаңы өтүү үчүн кайра баштоо
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# Колдонуу:
obj = MyIterable([1, 2, 3])
for item in obj:
print(item)
Альтернативдүү, __iter__ башка кайталануучу кайтарса болот, мисалы, генератор колдонуп:
def __iter__(self):
for item in self.data:
yield item
Бул ыкма жөнөкөй жана көбүнчө артыкчылыкка ээ.