CodeBlanks Logo Icon CodeBlanks

Özet - Magic metotlar

__eq__, __add__ ve __iter__'ı birleştirerek bir Vector sınıfı yazarsın.

Özet - Magic metotlar

Bu grupta __eq__, __lt__, __add__, __len__, __getitem__, __iter__, __next__ ve __contains__ metotlarını işledik. Bunlar, sınıf örneklerini yerleşik işleçlerle kullanmayı sağlar.

== için __eq__, + için __add__, len() için __len__, in için __contains__ tanımlanır. Şimdi bunları birleştiren bir Number sınıfı yazacağız.

Uygulama Number sınıfını birleştir

Number sınıfını tanımla. def __init__(self, value): ve gövdede self.value = value yaz. def __eq__(self, other): ve gövdede return self.value == other.value yaz. def __add__(self, other): ve gövdede return Number(self.value + other.value) yaz. Sonra n1 = Number(5), n2 = Number(5), print(n1 == n2), n3 = n1 + Number(3) ve print(n3.value) çağrılarını yap.

Başlangıç kodu

main.py
# Number sınıfını birleştir

Örnek çözüm

main.py
# Number sınıfını birleştir
class Number:
    def __init__(self, value):
        self.value = value
    def __eq__(self, other):
        return self.value == other.value
    def __add__(self, other):
        return Number(self.value + other.value)

n1 = Number(5)
n2 = Number(5)
print(n1 == n2)
n3 = n1 + Number(3)
print(n3.value)

Beklenen çıktı

True
8

Soru ve cevaplar

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

1 + işleci hangi metodu çağırır?

  • self
  • __add__ Doğru cevap
  • this
  • class

Açıklama: + işleci __add__ metodunu çağırır.

2 Kavramları eşle

Kavram Anlamı
__eq__ == işleci
__add__ + işleci
__len__ len()

3 __add__ gövdesini tamamla

Soru
class Number:
    def __init__(self, value):
        self.____ = value
Cevap
class Number:
    def __init__(self, value):
        self.value = value

Açıklama: value parametresi self.value'a atanır.

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