Özet - Magic metotlar
- Python kursu
- Orta seviye
- Ders 35/116
- 5 dk
__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
# Number sınıfını birleştirÖrnek çözüm
# 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
class Number:
def __init__(self, value):
self.____ = value
class Number:
def __init__(self, value):
self.value = value
Açıklama: value parametresi self.value'a atanır.