__add__
- Python kursu
- Orta seviye
- Ders 31/116
- 5 dk
__add__ ile operatör aşırı yüklemeyi öğrenirsin.
__add__ metodu
__add__(self, other), + işlecini tanımlar. Genellikle yeni bir örnek döndürür; self'i değiştirmez. Bu, sınıf örnekleri üzerinde matematik gibi işlemler yapmayı sağlar.
Örnek: class Vector:\n def __add__(self, other):\n return Vector(self.x + other.x, self.y + other.y). v1 + v2 yazımı yeni bir Vector döndürür. self.x ve other.x toplanır; sonuç yeni örneğe konur. Bu, değişmez (immutable) tarzda birleşim sağlar.
Yeni örnek döndür
__add__, self'i değiştirmez; yeni bir örnek döndürür. Bu, orijinal örneklerin korunmasını sağlar. İşlem sonrası v1 ve v2 aynı kalır.
Örnek: v3 = v1 + v2 sonrası v1 ve v2 değişmez; v3 yeni örnektir. Bu, matematiksel vektörlerde beklenen davranıştır. Eğer self'i değiştirseydik, v1 += v2 dışında beklenmedik yan etkiler olurdu.
Uygulama Vector sınıfına __add__ ekle
Vector sınıfını tanımla. def __init__(self, x, y): ve gövdede self.x = x ve self.y = y yaz. def __add__(self, other): ekle; gövdede return Vector(self.x + other.x, self.y + other.y) yaz. Sonra v1 = Vector(1, 2), v2 = Vector(3, 4), v3 = v1 + v2 ve print(v3.x) çağrılarını yap.
Başlangıç kodu
# Vector sınıfını tanımlaÖrnek çözüm
# Vector sınıfını tanımla
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2
print(v3.x)Beklenen çıktı
4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 __add__ gövdesini tamamla
class Vector:
def __add__(self, other):
return Vector(self.x + ____, self.y + other.y)
class Vector:
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
Açıklama: other.x ile self.x toplanır.
2 v1 + v2 hangi metodu çağırır?
- __mul__
- __add__ Doğru cevap
- __sub__
- __radd__
Açıklama: + işleci __add__ metodunu çağırır.
3 __add__ kavramlarını eşle
| Kavram | Anlamı |
|---|---|
__add__ |
+ işleci |
return Vector(...) |
Yeni örnek |
v1 + v2 |
İşlem çağrısı |