__len__ ve __getitem__
- Python kursu
- Orta seviye
- Ders 32/116
- 5 dk
__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
# Stack sınıfını tanımlaÖrnek çözüm
# 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
class Stack:
def __getitem__(self, ____):
return self.items[index]
class Stack:
def __getitem__(self, index):
return self.items[index]
Açıklama: __getitem__ self ve index parametreleri alır.