Örneğin, + operatörü matematiksel olarak iki sayı ekleyebilir, iki listeyi birleştirebilir veya dizeleri birleştirebilir. Ekleme ve birleştirme için kullanılan + operatörünün bir görüntüsünü gösteren basit bir python programı.
Peki, bu operatörleri bir dizideki nesneler için kullanırsak ne olur? Kullanıcı tanımlı sınıf? 2 boyutlu boyut şemasında bir noktayı simüle etmeye çalışan aşağıdaki programı alalım. Aşağıda, Python'un 2 koordinat örneğini nasıl birleştireceğini anlamadığı için, bir Tip Hatası oluşturuldu.
Bu görevi Python'da operatör aşırı yüklemesi ile gerçekleştirebiliriz, ancak her şeyden önce, özel yöntemleri anlayalım.
Özel Büyülü Yöntemler
ile başlayan sınıf yöntemleri çift alt çizgi Python'da özel yöntemler veya sihirli işlevler olarak sınıflandırılır. Belirli faaliyetleri yürütmek için kullanılan işlevler. Bir sınıf için tanımladığımız olağan yöntemler bu tür işlevler değildir. Bunlardan biri olurdu __içinde_() yukarıda bahsettiğimiz fonksiyon. O sınıfta ne zaman yeni bir nesne inşa etsek, buna denir. Sihirli işlevler aracılığıyla yerleşik işlevlere sınıfımızı uyumlu hale getireceğiz. Python'da birkaç özel fonksiyon daha vardır.
İkili veya Matematiksel Operatörler
Python ikili veya matematiksel operatörlerini aşırı yüklemek için sihirli işlevlerin ayrıntıları.
İlişkisel veya Karşılaştırma Operatörleri
Python karşılaştırmasını veya ilişkisel operatörleri aşırı yüklemek için sihirli işlevlerin ayrıntıları aşağıdadır.
Atama Operatörleri
Python kodunda atama operatörlerini aşırı yüklemek için bazı sihirli işlevlerin ayrıntıları:.
Şimdi, yukarıda bahsedilen sihirli yöntemleri kullandığımızda ve belirli operatörleri aşırı yüklediğimizde birkaç örnek koda göz atmanın zamanı geldi.
İkili veya Matematiksel Operatörleri Aşırı Yükleyin
Örnek 01: Toplama Operatörü
uygulamak zorunda kalacaksın __Ekle_() sınıftaki yöntemi aşırı yüklemek için + Şebeke. Büyük görev büyük bir güçle gelir. Bu yöntemin içinde istediğiniz her şeyi yapabilirsiniz. Ama geri dönmek çok daha mantıklı'kord' koordinat toplamının nesnesi.
c1 + c2'yi denediğinizde Python aslında sihrini çağırıyor .c1 olarak __add__() yöntemi.__add__(c2) veya Koord.__add__(c1,c2).
Örnek 02: Çarpma Operatörü
Aynı şekilde, sihirli işlevleri kullanarak birkaç ikili operatörü bile aşırı yükleyebilirsiniz. Yukarıdaki aynı örnekte, çarpma operatörünü aşırı yüklerken şunu elde ederiz: 2, 6 sihirli fonksiyona cevabımız olarak.
Örnek 03: Çıkarma Operatörü
Çıkarma operatörünü kullanarak, -1, -1 cevabımız olarak.
Örnek 04: Güç Operatörü
aşırı yükledik güç güç büyüsü işlevini kullanırken operatör; aldık 1, 8.
Örnek 05: Modül Operatörü
Modül operatörünü aşırı yükleyerek, __mod__ modülü almak için sihirli işlev.
Diğer matematiksel operatörleri de kullanabilirsiniz, e.g., aşırı yükleme için bölme ve kat bölme operatörü.
Karşılaştırma Operatörlerini Aşırı Yükleyin
Python, operatörlerin aşırı yüklenmesini yalnızca ikili veya aritmetik operatörlerle kısıtlamaz. Ayrıca karşılaştırma operatörlerini aşırı yükleyebiliriz.
Örnek 01: Operatörden Daha Az
Şundan daha azına ihtiyacımız olduğunu varsayalım '<' symbol bizim 'kord' uygulanacak sınıf. Bu argümanların değerini kaynaktan karşılaştıralım ve cevabı verelim. Her zamanki gibi uygulanabilir. Üç nesnemiz var ve bunları print ifadelerinde karşılaştırıyoruz. Sonuç olarak, bu nesneyi alacağız c1 dır-dir Daha az daha c2, bu yüzden çıktı Doğru. Diğer yandan, c2 ve c1 Hangi daha mükemmel daha c3; bu yüzden hem Yanlış çıktı.
Örnek 02: Operatöre Eşit Değil
Şimdi aşırı yükleme Eşit değil (!=) karşılaştırma operatörü, alacaksınız Doğru her iki nesnenin de eşit olmaması koşulunu sağladığı için birinci ve ikinci print deyimi durumunda. Öte yandan, nesne 1, eşit değil koşulunu karşılamayan nesne 3 ile aynı sonucu verir. Bu nedenle üçüncü print deyimi çıktıları Yanlış sonuç olarak.
Örnek 03: Operatörden Büyük veya Eşittir
Aynı örneği aşırı yüklemek için deneyelim büyük veya eşit operatöre. İlk basılı ifade durumunda, elimizde 2 >= 13, hangisi doğru değil; bu yüzden False verir. İkinci ve üçüncü baskı ifadelerinde, 13>=2 ve 2>=2, sırasıyla. Her ikiside Doğru daha büyük veya eşittir koşulunu yerine getirdikleri için.
Diğer karşılaştırma operatörlerini deneyin, e.g., kodunuzda da daha önemli, eşittir, 'küçük veya eşittir'.
Atama Operatörlerini Aşırı Yükleyin
Atama operatörü aşırı yükleme örneğine bir göz atın. Aşırı yükleme ile benzer bir örnek alıyoruz '-=' atama operatörü. y ve z koordinat değerlerine sahip iki nesne tanımladık. İlk nesne c1 değerlerini aktarıyor 'öz.sen ve 'öz.z' sırasıyla değişkenler. Öte yandan, nesne c2 değerlerini aktarıyor 'diğer.sen ve 'diğer.z'.
Nesne c1 değerleri var öz.y=1 ve öz.z=1 hemen şimdi. Nesne c2 değerler'diğer.y = -2' ve 'diğer.z = -3' geçti çıkarılmış nesneden c1 değerler. Sonuç olarak c1 - c2 sonuçları öz.y - diğer.y = 1-(-2) ve öz.z - diğer.z = 1-(-3). 3 ve 4 olan hesaplanan sonuç 'self' içine kaydedilmiştir.x' ve 'öz.z', '= atama operatörü nedeniyle.' Baskıda, bu kod, iki değişkeni olan c1 nesnesinin sonucunu verir öz.y = 3 ve öz.z = 4.
Sonuç
Operatör Aşırı Yüklemesini daha iyi anlamak için kodunuzdaki tüm operatörleri kapsamaya çalışıyoruz.