CodeBlanks Logo Icon CodeBlanks

__len__ ve __getitem__

__len__ ve __getitem__ ile dizi benzeri davranışı öğrenirsin.

__len__ ve __getitem__

__len__(self), len(obj) çağrısının sonucunu verir. __getitem__(self, index), obj[index] erişimini tanımlar. Bu ikisi, sınıfı dizi gibi kullanmayı sağlar.

Örnek: class Stack:\n def __len__(self):\n return len(self.items)\n def __getitem__(self, index):\n return self.items[index]. len(s) öğe sayısını, s[0] ilk öğeyi verir. Bu, sınıfın davranışını yerleşik türlere benzer kılar.

Dizi gibi kullanım

__len__ ve __getitem__ tanımlı sınıflar, dizi gibi kullanılabilir. len(s), s[0], s[-1] ve dilimleme çalışır. Bu, koleksiyon sınıfları için doğal bir arayüz sağlar.

Örnek: Stack sınıfında len(s) öğe sayısını verir; s[0] en alttaki öğeyi döndürür. Öğrenci, bunun bir liste olduğunu sanabilir; ama gerçekte __getitem__ çağrılır. Bu sayede sınıf, Python deyimine uygun davranır.

Uygulama Stack sınıfına dizi metotları ekle

Stack sınıfını tanımla. def __init__(self): ve gövdede self.items = [] yaz. def push(self, value): ve gövdede self.items.append(value) yaz. def __len__(self): ve gövdede return len(self.items) yaz. def __getitem__(self, index): ve gövdede return self.items[index] yaz. Sonra s = Stack(), s.push(1), s.push(2), print(len(s)) ve print(s[0]) çağrılarını yap.

Başlangıç kodu

main.py
# Stack sınıfını tanımla

Örnek çözüm

main.py
# Stack sınıfını tanımla
class Stack:
    def __init__(self):
        self.items = []
    def push(self, value):
        self.items.append(value)
    def __len__(self):
        return len(self.items)
    def __getitem__(self, index):
        return self.items[index]

s = Stack()
s.push(1)
s.push(2)
print(len(s))
print(s[0])

Beklenen çıktı

2
1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Dizi metotlarını eşle

Kavram Anlamı
__len__ len()
__getitem__ obj[index]
len(self.items) İç liste boyu

2 len(obj) hangi metodu çağırır?

  • __size__
  • __length__
  • __len__ Doğru cevap
  • __count__

Açıklama: len() işlevi __len__ metodunu çağırır.

3 __getitem__ imzasını tamamla

Soru
class Stack:
    def __getitem__(self, ____):
        return self.items[index]
Cevap
class Stack:
    def __getitem__(self, index):
        return self.items[index]

Açıklama: __getitem__ self ve index parametreleri alır.

Orta seviye bölümündeki tüm dersler