0Pricing
Python Academy · Pelajaran

Method Ajaib: __str__ dan __repr__

Implementasikan method dunder untuk menghasilkan representasi objek yang mudah dibaca.

Method Ajaib: __str__ dan __repr__ adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Apa Itu Metode Ajaib?

Metode ajaib (dunder) adalah metode khusus dengan garis bawah ganda yang dipanggil Python dalam konteks tertentu, seperti saat mencetak atau membandingkan.

class Foo:
    def __str__(self):
        return "I am Foo"

f = Foo()
print(f)        # I am Foo
print(str(f))   # I am Foo

__repr__: Representasi untuk Pengembang

__repr__ sebaiknya mengembalikan string yang tidak ambigu dan idealnya memungkinkan objek dibuat kembali. String ini ditampilkan di REPL dan digunakan oleh repr().

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

p = Point(3, 4)
print(repr(p))  # Point(3, 4)

__str__: Representasi untuk Pengguna

__str__ menyediakan string yang mudah dipahami manusia. print() dan str() memanggilnya. Jika tidak tersedia, Python menggunakan __repr__ sebagai cadangan.

class Temperature:
    def __init__(self, celsius):
        self.celsius = celsius

    def __str__(self):
        return f"{self.celsius}°C"

    def __repr__(self):
        return f"Temperature({self.celsius})"

t = Temperature(100)
print(t)        # 100°C
print(repr(t))  # Temperature(100)

Kapan Masing-Masing Dipanggil

__str__: print(), str(), f-string. __repr__: REPL, repr(), kontainer yang menampilkan elemennya.

class Item:
    def __str__(self): return "str"
    def __repr__(self): return "repr"

x = Item()
print(x)         # str
print([x])       # [repr]  ← list uses repr for elements

__format__ untuk Pemformatan Kustom

Definisikan __format__ untuk mengatur cara f-string dengan spesifikasi format menampilkan objek Anda.

class Money:
    def __init__(self, amount):
        self.amount = amount

    def __format__(self, spec):
        if spec == "usd":
            return f"${self.amount:.2f}"
        return str(self.amount)

m = Money(9.5)
print(f"{m:usd}")  # $9.50

__bool__ untuk Nilai Kebenaran

__bool__ memungkinkan objek Anda dievaluasi dalam konteks boolean. Kembalikan True atau False.

class Bag:
    def __init__(self, items):
        self.items = items

    def __bool__(self):
        return len(self.items) > 0

b = Bag([])
if not b:
    print("Bag is empty")  # Bag is empty

__len__ untuk len()

__len__ membuat len(obj) dapat digunakan. Metode ini juga menjadi dasar bagi __bool__ jika __bool__ tidak didefinisikan.

class Stack:
    def __init__(self):
        self.data = []

    def push(self, v): self.data.append(v)

    def __len__(self):
        return len(self.data)

s = Stack()
s.push(1)
print(len(s))  # 1

__eq__ untuk Kesetaraan

Definisikan __eq__ untuk menentukan kondisi dua instans dianggap sama dengan ==.

class Vector:
    def __init__(self, x, y):
        self.x, self.y = x, y

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

print(Vector(1,2) == Vector(1,2))  # True

__hash__ Dipasangkan dengan __eq__

Saat Anda mendefinisikan __eq__, Python menetapkan __hash__ ke None, sehingga objek tidak dapat di-hash. Definisikan __hash__ juga jika Anda perlu menyimpan objek dalam set atau kamus.

class Point:
    def __init__(self, x, y): self.x, self.y = x, y
    def __eq__(self, o): return (self.x, self.y) == (o.x, o.y)
    def __hash__(self): return hash((self.x, self.y))

pts = {Point(1,2), Point(1,2)}
print(len(pts))  # 1

__add__ dan Aritmetika

Operator aritmetika dipetakan ke metode dunder: __add__ untuk +, __sub__ untuk -, dan seterusnya.

class Vector:
    def __init__(self, x, y): self.x, self.y = x, y
    def __add__(self, o): return Vector(self.x+o.x, self.y+o.y)
    def __repr__(self): return f"Vector({self.x},{self.y})"

print(Vector(1,2) + Vector(3,4))  # Vector(4,6)

__getitem__ untuk Pengindeksan

__getitem__ memungkinkan kelas Anda mendukung pengindeksan dengan tanda kurung siku seperti obj[key].

class Matrix:
    def __init__(self, data):
        self.data = data

    def __getitem__(self, idx):
        return self.data[idx]

m = Matrix([[1,2],[3,4]])
print(m[0])     # [1, 2]
print(m[1][0])  # 3

Pemeriksaan Singkat

Metode dunder mana yang dipanggil saat Anda menggunakan print(obj)?

Ringkasan

Metode ajaib memberikan perilaku khas Python pada kelas Anda. __repr__ ditujukan untuk pengembang, sedangkan __str__ ditujukan untuk pengguna. Definisikan __eq__, __hash__, dan metode dunder aritmetika agar objek berfungsi secara menyeluruh.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Method Ajaib: __str__ dan __repr__” gratis?

Ya — teks lengkap “Method Ajaib: __str__ dan __repr__” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Method Ajaib: __str__ dan __repr__”?

Implementasikan method dunder untuk menghasilkan representasi objek yang mudah dibaca. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Method Ajaib: __str__ dan __repr__” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Class dan Method __init__
  2. Atribut Instance vs Class
  3. Method Instance dan self
  4. Method Ajaib: __str__ dan __repr__
← Kembali ke Python Academy