CodeBlanks Logo Icon CodeBlanks

__eq__ ve __lt__

__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

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

Örnek çözüm

main.py
# 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

Soru
class Point:
    def __eq__(self, other):
        return self.x == ____ and self.y == other.y
Cevap
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

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