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]) # 3Pemeriksaan 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
- Class dan Method __init__
- Atribut Instance vs Class
- Method Instance dan self
- Method Ajaib: __str__ dan __repr__