Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Python: Objek dan Berkas

Pelajaran 3 dari 16

Kelas dan objek

Menampilkan dan membandingkan objek: __str__, __repr__, __eq__

Setelah pelajaran ini kamu bisa menulis __str__ untuk tampilan bagi pembaca, __repr__ untuk tampilan pemeriksaan, dan __eq__ untuk membandingkan dua objek berdasarkan isinya.

±13 menitDiperiksa 5 Okt 2026

Materi

Tanpa bantuan, print(objek) mencetak sesuatu seperti <__main__.Ruangan object at 0x10a3f2d50>: nama kelas dan alamat memori, tidak ada isinya. Dua method khusus mengubahnya. __str__ dipanggil oleh print() dan str(), dan boleh berbentuk ringkas untuk dibaca orang. __repr__ dipanggil oleh repr(); referensi model data Python meminta hasilnya, bila memungkinkan, berbentuk ekspresi Python yang bisa membuat ulang objeknya, karena tampilan ini dipakai saat memeriksa program. Bila kelas hanya punya __repr__, print memakainya juga.

class Ruangan:
    def __init__(self, nama, kapasitas):
        self.nama = nama
        self.kapasitas = kapasitas

    def __str__(self):
        return f"{self.nama} ({self.kapasitas} orang)"

    def __repr__(self):
        return f"Ruangan({self.nama!r}, {self.kapasitas})"

r = Ruangan("Aula", 80)
print(r)          # Aula (80 orang)
print(repr(r))    # Ruangan('Aula', 80)
print([r])        # [Ruangan('Aula', 80)]
print(f"{1250000:,}".replace(",", "."))   # 1.250.000

Penanda !r di f-string menampilkan nilai lewat repr(), sehingga teks muncul lengkap dengan tanda kutipnya. Baris terakhir contoh menunjukkan cara menulis Rupiah: pemisah ribuan :, menghasilkan koma, lalu komanya diganti titik. List, tuple, dan dict selalu menampilkan isinya dengan __repr__, bukan __str__.

Perbandingan == juga bisa diatur. Tanpa __eq__, dua objek hanya dianggap sama bila keduanya objek yang persis sama, sehingga dua barang berkode sama yang dibuat terpisah tetap tidak sama. __eq__(self, other) mengembalikan True atau False; bila other bukan objek yang dikenalnya, kembalikan NotImplemented supaya Python mencoba cara lain.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Apa yang tercetak oleh kode ini?

class Tamu:
    def __init__(self, nama):
        self.nama = nama

    def __str__(self):
        return "Tamu " + self.nama

daftar = [Tamu("Andi"), Tamu("Rini")]
print(daftar)
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke