Yükleniyor...

Özel metotlar

Özel bir metot, rozetin print ya da len karşısında kendi başına yanıt vermesini sağlar. İlk programda print(guest) ekrana badge mira yazar, çünkü str çalışır. guest.str() diye bir ifade yazmazsınız, onu print(guest) çalıştırır. mira adı bir Badge içinde saklanır, hiçbir paket kurulmaz, hiçbir klasör oluşmaz. Badge("mira") yazdığınızda init çalışır ve self o rozetin kendisidir. str sözcükleri döndürür, ekrana yazan ise print olur. badge ile mira arasında tek bir boşluk vardır.

print __str__'i çalıştırır

python
class Badge:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return "badge " + self.name

guest = Badge("mira")
print(guest)

Ekranda tek bir satır görünür: badge mira. Saklanan ad mira'dır, öndeki badge sözcüğünü str ekler, satırı ekrana yazan ise print olur. Bu programda print olmasaydı ekran boş kalırdı, çünkü sözcükleri döndürmek onları yazmak anlamına gelmez. Programda guest.str() de yok, print(guest) yeterli. str tanımlı olmayan bir rozet badge mira yazmaz. Çıkan satırda sınıfın adı ve bellekteki bir konum geçer. None yazılmaz.

len __len__'i çalıştırır

python
class Badge:
    def __init__(self, name):
        self.name = name
    def __len__(self):
        return len(self.name)

guest = Badge("mira")
print(len(guest))

İkinci program ilkinden ayrıdır. Ekranında tam sayı 4 görünür, badge mira ya da mira değil. Bu programda len tanımlıdır ve len(self.name) döndürür, print(len(guest)) da 4 yazar. mira'da dört harf vardır: m, i, r, a. Bu yüzden sonuç 4 olur, ondalık nokta olmaz. Saklanan adda boşluk da yoktur. İkinci programda str tanımlı değildir, dolayısıyla badge mira yazılmaz. len eksikse len(guest) noktasında program durur. Bu durmanın adı TypeError'dır. None yazılmaz ve program devam etmez. Böyle bir satır programda yer almaz.

📊 Ne yazarsınız, ne görünür

Ne yazarsınız Ekranda ne görünür
print(guest) badge mira
print(len(guest)) 4
__len__ olmadan len(guest) program durur

Bir sonraki sayfa bir nesneyi başka bir nesnenin içine koyar. Bu sayfada ise yalnızca mira adlı tek bir rozet üzerinde iki özel metot var.

İki yanıt, tek rozet

print(guest) badge mira yazar, çünkü str çalışır. print(len(guest)) 4 yazar, çünkü len çalışır. 4, mira'daki harf sayısıdır. Bu özel adların ardına ayrıca parantez eklemezsiniz. Bir sonraki sayfa bir nesneyi başka bir nesnenin içine koyar.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
5
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek