Menu
CoddyTech

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:

  1. Method ini membuat object dapat diiterasi.
  2. 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:

  1. Definisikan method __iter__() di dalam class-mu.
  2. 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 fungsi iter() pada object atau saat kamu menggunakannya dalam for loop.
  • Mengembalikan self dalam __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.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

challenge icon

Tantangan

Mudah

Buat 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 baru

Semua pelajaran di Iterator Python

Latihan sendiri: Compiler Python online