Menu
CoddyTech

Mengimplementasikan __next__()

Pelajaran 5 dari 13 dalam kursus Iterator Python di Coddy.

Method __next__() adalah bagian penting dalam membuat iterator kustom di Python. Method ini menentukan cara mengambil item berikutnya dalam urutan iterasi. Saat mengimplementasikan __next__(), kamu mengendalikan perilaku iterator, menentukan nilai yang dihasilkannya dan kapan iterator harus berhenti.

Tujuan __next__()

Method __next__() memiliki dua tujuan utama:

  1. Mengembalikan item berikutnya dalam urutan
  2. Memunculkan exception StopIteration saat tidak ada item lagi

Mengimplementasikan __next__()

Berikut struktur dasar untuk mengimplementasikan __next__():

class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        result = self.data[self.index]
        self.index += 1
        return result

Aspek Utama __next__()

  • Pengelolaan Status: Lacak status iterasi saat ini, misalnya dengan menggunakan indeks.
  • Mengembalikan Item Berikutnya: Tentukan dan kembalikan item berikutnya dalam urutan.
  • StopIteration: Munculkan StopIteration saat tidak ada item lagi.
  • Efek Samping: Perbarui status internal yang diperlukan untuk iterasi berikutnya.

Contoh: Iterator Rentang Kustom

Berikut contoh iterator kustom yang meniru versi sederhana dari range()</function> milik Python:</p> <pre><code class="language-python">class CustomRange: def __init__(self, start, end): self.current = start self.end = end def __iter__(self): return self def __next__(self): if self.current >= self.end: raise StopIteration result = self.current self.current += 1 return result # Menggunakan iterator range buatanmu for num in CustomRange(1, 5): print(num) # Output: 1, 2, 3, 4

Dalam contoh ini, __next__() mengembalikan angka saat ini dan menambah nilainya untuk iterasi berikutnya, lalu memunculkan StopIteration saat mencapai nilai akhir.

Dengan mengimplementasikan __next__(), kamu menentukan perilaku inti iterator sehingga iterator dapat bekerja dengan lancar bersama mekanisme iterasi Python, seperti perulangan for dan fungsi next().

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 kustom bernama FibonacciIterator yang menghasilkan bilangan Fibonacci hingga batas tertentu. Urutan Fibonacci dimulai dengan 0 dan 1, dan setiap bilangan berikutnya merupakan jumlah dari dua bilangan sebelumnya.

Kamu diberikan hal berikut:

  • Bilangan bulat limit sebagai input

Class FibonacciIterator-mu harus:

  • Menerapkan method __next__() untuk menghasilkan bilangan Fibonacci berikutnya
  • Menghentikan perulangan ketika bilangan Fibonacci berikutnya akan melebihi batas yang diberikan
  • Menghasilkan exception StopIteration ketika urutannya habis

Setelah menerapkan class FibonacciIterator, buat sebuah instance dengan menggunakan batas input, lalu cetak setiap bilangan Fibonacci yang dihasilkan pada baris baru.

Input akan diberikan sebagai string yang mewakili bilangan bulat.

Coba sendiri

# Baca input
limit = int(input())

class FibonacciIterator:
    def __init__(self, limit):
        self.limit = limit
        self.a, self.b = 0, 1

    def __iter__(self):
        return self

    def __next__(self):
        # TODO: Implementasikan method __next__()
        # Hasilkan bilangan Fibonacci berikutnya
        # Bangkitkan StopIteration saat deret sudah habis
        pass

# Buat instance dari FibonacciIterator
fib_iterator = FibonacciIterator(limit)

# TODO: Telusuri deret Fibonacci dan cetak setiap bilangannya

# Note: Pastikan kamu mencetak setiap bilangan Fibonacci agar lolos kasus uji

Semua pelajaran di Iterator Python

Latihan sendiri: Compiler Python online