0Pricing
Python Academy · Ders

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.50

Doğ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 empty

len() 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))  # 1

Eş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])  # 3

Hı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

  1. Sınıflar ve __init__ Yöntemi
  2. Örnek ve Sınıf Öznitelikleri
  3. Örnek Yöntemleri ve self
  4. Sihirli Yöntemler: __str__ ve __repr__
← Python Academy Sayfasına Dön