Mengimplementasikan __iter__()
Pelajaran 4 dari 13 dalam kursus Iterator Python di Coddy.
Membuat iterator khusus di Python melibatkan penerapan method __iter__() di dalam class. Method ini merupakan bagian penting dari protokol iterator dan memungkinkan kamu menentukan perilaku object khususmu sebagai iterator.
Method __iter__()
Method __iter__() memiliki dua tujuan utama:
- Method ini membuat object dapat diiterasi.
- Method ini mengembalikan object iterator itu sendiri.
Berikut struktur dasar class dengan method __iter__():
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
Menerapkan __iter__()
Untuk menerapkan __iter__() di class khususmu:
- Definisikan method
__iter__()di dalam class-mu. - Method tersebut harus mengembalikan object iterator itu sendiri, biasanya
self.
Berikut contoh iterator khusus yang sederhana:
class CountDown:
def __init__(self, start):
self.start = start
def __iter__(self):
# Kembalikan object iterator (self)
return self
def __next__(self):
if self.start <= 0:
raise StopIteration
self.start -= 1
return self.start + 1
# Menggunakan iterator khusus
countdown = CountDown(5)
for num in countdown:
print(num)
Dalam contoh ini, method __iter__() mengembalikan self, sehingga object CountDown dapat diiterasi sekaligus menjadi iteratornya sendiri.
Poin Penting
- Method
__iter__()dipanggil saat kamu menggunakan fungsiiter()pada object atau saat kamu menggunakannya dalam for loop. - Mengembalikan
selfdalam__iter__()umum dilakukan saat class menerapkan__iter__()dan__next__(). - Jika class-mu hanya menerapkan
__iter__(), method tersebut harus mengembalikan object iterator terpisah yang memiliki method__next__().
Dengan menerapkan __iter__(), kamu membuat object khususmu dapat diiterasi, sehingga object tersebut dapat digunakan dalam for loop dan operasi berbasis iterator lainnya di Python.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Tantangan
MudahBuat class iterator khusus bernama AlphabetIterator yang menghasilkan huruf kapital alfabet bahasa Inggris. Iterator harus dimulai dari 'A' dan berlanjut hingga huruf yang ditentukan.
Kamu diberikan hal berikut:
- Satu huruf kapital sebagai input (misalnya, 'E', 'K', 'Z')
Class AlphabetIterator-mu harus:
- Mengimplementasikan method
__iter__()agar object dapat diiterasi - Menghasilkan huruf kapital mulai dari 'A'
- Berhenti saat mencapai huruf input yang ditentukan (inklusif)
Setelah mengimplementasikan class AlphabetIterator, buat sebuah instance dengan menggunakan huruf input, lalu cetak setiap huruf yang dihasilkan pada baris baru.
Input akan diberikan sebagai string yang berisi satu huruf kapital.
Coba sendiri
# Baca input
end_letter = input().strip()
class AlphabetIterator:
def __init__(self, end_letter):
self.end_letter = end_letter
self.current_letter = 'A'
def __iter__(self):
return self
# TODO: Implementasikan method __next__()
# Buat instance dari AlphabetIterator
alphabet_iter = AlphabetIterator(end_letter)
# TODO: Iterasi melalui AlphabetIterator dan cetak setiap huruf
# Note: Pastikan setiap huruf dicetak pada baris baruSemua pelajaran di Iterator Python
2Membuat Iterator Kustom
Mengimplementasikan __iter__()Mengimplementasikan __next__()Iterator Tak TerbatasLatihan sendiri: Compiler Python online