__eq__ ve __lt__
- Python kursu
- Orta seviye
- Ders 30/116
- 5 dk
__eq__ ve __lt__ ile karşılaştırma öğrenirsin.
__eq__ ve __lt__
Magic metotlar, Python'un yerleşik işleçlerini sınıfa uyarlar. __eq__(self, other), == işlecini; __lt__(self, other), < işlecini tanımlar.
Örnek: class Point:\n def __eq__(self, other):\n return self.x == other.x and self.y == other.y. p1 == p2 yazımı __eq__'yi çağırır. Bu metotlar iki örneği karşılaştırmayı ve sıralamayı sağlar; sıralama __lt__'yi kullanır.
__lt__ ile sıralama
__lt__(self, other), < işlecini tanımlar. Python, sorted() ve list.sort() bunu kullanır. Bu metot True/False döndürür.
Örnek: def __lt__(self, other):\n return self.x < other.x. Böylece sorted([p1, p2, p3]) noktaları x'e göre sıralar. Eğer __lt__ tanımlı değilse, sıralama TypeError fırlatır. Sıralanabilir sınıflar için __lt__ şarttır.
Uygulama Point sınıfına __eq__ ekle
Point sınıfını tanımla. def __init__(self, x, y): ve gövdede self.x = x ve self.y = y yaz. def __eq__(self, other): ekle; gövdede return self.x == other.x and self.y == other.y yaz. Sonra p1 = Point(1, 2), p2 = Point(1, 2) ve print(p1 == p2) çağrılarını yap.
Başlangıç kodu
# Point sınıfını tanımlaÖrnek çözüm
# Point sınıfını tanımla
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2)Beklenen çıktı
True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 p1 == p2 hangi metodu çağırır?
- __eq__ Doğru cevap
- __lt__
- __cmp__
- __str__
Açıklama: == işleci __eq__ metodunu çağırır.
2 __eq__ gövdesini tamamla
class Point:
def __eq__(self, other):
return self.x == ____ and self.y == other.y
class Point:
def __eq__(self, other):
return self.x == other.x and self.y == other.y
Açıklama: other.x ile karşılaştırma yapılır.
3 Karşılaştırma metotlarını eşle
| Kavram | Anlamı |
|---|---|
__eq__ |
== işleci |
__lt__ |
< işleci |
sorted(...) |
__lt__ kullanır |