piton

Python'da Operatör Aşırı Yüklemesi

Python'da Operatör Aşırı Yüklemesi
Aşırı yükleme, bir yöntemin veya operatörün, tekniğe sağlanan parametrelere veya operatörün üzerinde çalıştığı işlenenlere dayalı olarak programlama anlamında birden çok şekilde hareket etme eğilimine karşılık gelir. Operatör Aşırı Yüklemesi, önceden tanımlanmış işlevsel önemlerinin üzerinde uzun süreli anlam verilmesi anlamına gelir.  Python operatörleri yerleşik sınıflar için çalışır, ancak çeşitli türler için aynı operatör farklı davranır. Bu kılavuzda Python'da operatör aşırı yüklemesini nasıl yapabileceğimizi göreceğiz.

Ö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.

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...