Sihirli Yöntemler: __str__ ve __repr__
Okunabilir nesne gösterimleri için çift alt çizgili yöntemleri uygulayın.
Sihirli Yöntemler: __str__ ve __repr__, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
Sihirli Yöntemler Nedir?
Sihirli yöntemler (dunder yöntemleri), Python'ın yazdırma veya karşılaştırma gibi belirli bağlamlarda çağırdığı, çift alt çizgi içeren özel yöntemlerdir.
class Foo:
def __str__(self):
return "I am Foo"
f = Foo()
print(f) # I am Foo
print(str(f)) # I am Foo__repr__: Geliştirici Gösterimi
__repr__, ideal olarak nesnenin yeniden oluşturulmasına olanak tanıyan, belirsizliğe yer bırakmayan bir dize döndürmelidir. Bu dize REPL'de gösterilir ve repr() tarafından kullanılır.
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__: Kullanıcı Gösterimi
__str__, insanların kolayca anlayabileceği bir dize sağlar. print() ve str() bunu çağırır. Tanımlı değilse Python, __repr__ yöntemine geri döner.
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)Her Biri Ne Zaman Çağrılır?
__str__: print(), str() ve f dizeleri. __repr__: REPL, repr() ve öğelerini gösteren kapsayıcılar.
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Özel Biçimlendirme için __format__
Biçim belirtimleri içeren f dizelerinin nesnenizi nasıl göstereceğini denetlemek için __format__ tanımlayın.
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.50Doğruluk Değeri için __bool__
__bool__, nesnenizin mantıksal bağlamlarda değerlendirilmesini sağlar. True veya False döndürün.
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 emptylen() için __len__
__len__, len(obj) ifadesinin çalışmasını sağlar. Ayrıca __bool__ tanımlanmadığında onun yerine kullanılır.
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)) # 1Eşitlik için __eq__
__eq__ tanımlayarak iki örneğin == ile hangi koşulda eşit sayılacağını belirtin.
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__eq__ ile __hash__ Eşleştirmesi
__eq__ tanımladığınızda Python, nesneyi özetlenemez hâle getirerek __hash__ değerini None olarak ayarlar. Nesneyi kümelerde veya sözlüklerde kullanmanız gerekiyorsa __hash__ yöntemini de tanımlayın.
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__ ve Aritmetik
Aritmetik işleçler dunder yöntemlerine eşlenir: + için __add__, - için __sub__ ve benzerleri.
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)Dizinleme için __getitem__
__getitem__, sınıfınızın obj[key] gibi köşeli parantezli dizinlemeyi desteklemesini sağlar.
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]) # 3Hızlı Denetim
print(obj) kullandığınızda hangi dunder yöntemi çağrılır?
Özet
Sihirli yöntemler, sınıflarınıza Python'a özgü davranışlar kazandırır. __repr__ geliştiricileri, __str__ kullanıcıları hedefler. Nesneleri tam işlevli hâle getirmek için __eq__, __hash__ ve aritmetik dunder yöntemlerini tanımlayın.
Sıkça Sorulan Sorular
“Sihirli Yöntemler: __str__ ve __repr__” dersi ücretsiz mi?
Evet — “Sihirli Yöntemler: __str__ ve __repr__” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“Sihirli Yöntemler: __str__ ve __repr__” dersinde ne öğreneceğim?
Okunabilir nesne gösterimleri için çift alt çizgili yöntemleri uygulayın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Sihirli Yöntemler: __str__ ve __repr__” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Sınıflar ve __init__ Yöntemi
- Örnek ve Sınıf Öznitelikleri
- Örnek Yöntemleri ve self
- Sihirli Yöntemler: __str__ ve __repr__