Misalnya, operator + dapat menambahkan dua angka secara matematis, menggabungkan dua daftar, atau menggabungkan string. Berikut adalah program python sederhana untuk menunjukkan sekilas operator + yang digunakan untuk penambahan dan penggabungan.
Nah, apa jadinya jika kita menggunakan operator ini untuk objek di a ditetapkan pengguna kelas? Mari kita ambil program berikut yang mencoba mensimulasikan sebuah titik dalam skema dimensi 2-D:. Di bawah ini, Anda sudah dapat melihatnya karena Python tidak mengerti cara menggabungkan 2 instance koordinat, a Ketik Kesalahan dihasilkan.
Kita dapat menyelesaikan tugas ini dengan Python melalui kelebihan operator, tetapi pertama-tama, mari kita pahami metode khusus.
Metode Sihir Khusus
Metode kelas dimulai dengan garis bawah ganda diklasifikasikan dalam Python sebagai metode khusus atau fungsi ajaib. Fungsi yang digunakan untuk melakukan aktivitas tertentu. Metode yang biasa kami jelaskan untuk sebuah kelas bukanlah fungsi seperti itu. Salah satunya adalah __init_() fungsi yang kami sebutkan di atas. Setiap kali kita membangun objek baru di kelas itu, itu disebut. Kami akan membuat kelas kami sesuai dengan fungsi bawaan melalui fungsi ajaib. Dalam Python, ada beberapa fungsi khusus lainnya.
Operator Biner atau Matematika
Berikut adalah detail fungsi ajaib untuk membebani biner python atau operator matematika.
Operator Relasional atau Perbandingan
Di bawah ini adalah detail fungsi ajaib untuk membebani perbandingan python atau operator relasional.
Operator Penugasan
Berikut adalah detail dari beberapa fungsi ajaib untuk membebani operator penugasan dalam kode python.
Sekarang, saatnya untuk melihat sekilas beberapa contoh kode ketika kita menggunakan metode ajaib yang disebutkan di atas dan membebani operator tertentu.
Membebani Operator Biner atau Matematika
Contoh 01: Operator Penambahan
Anda harus menegakkan __Menambahkan_() metode di kelas untuk membebani + operator. Tugas besar datang dengan kekuatan besar. Di dalam metode ini, Anda dapat melakukan apa pun yang Anda inginkan. Tetapi jauh lebih rasional untuk mengembalikan 'koor' objek jumlah koordinat.
Ketika Anda mencoba c1 + c2, Python benar-benar memanggil keajaibannya .__add__() metode sebagai c1.__tambahkan__(c2) atau Koordinat.__tambahkan__(c1,c2).
Contoh 02: Operator Perkalian
Demikian juga, Anda bahkan dapat membebani beberapa operator biner menggunakan fungsi ajaib. Dalam contoh di atas yang sama, saat membebani operator perkalian, kita mendapatkan 2, 6 sebagai jawaban kami untuk fungsi ajaib.
Contoh 03: Operator Pengurangan
Menggunakan operator pengurangan, kita dapatkan -1, -1 sebagai jawaban kami.
Contoh 04: Operator Listrik
Kami membebani kekuasaan operator saat menggunakan fungsi kekuatan sihir; kita punya 1, 8.
Contoh 05: Operator Modulus
Membebani operator modulus, kami telah menggunakan __mod__ fungsi ajaib untuk mendapatkan modulus.
Anda juga dapat menggunakan operator matematika lainnya, mis.g., operator divisi dan divisi lantai, untuk kelebihan beban.
Membebani Operator Perbandingan
Python tidak membatasi kelebihan operator hanya pada operator biner atau aritmatika. Kami juga dapat membebani operator perbandingan.
Contoh 01: Kurang dari Operator
Asumsikan kita membutuhkan kurang dari '<' symbol di ' kamikoor' kelas yang akan dilaksanakan. Mari kita bandingkan nilai argumen ini dari sumbernya dan dapatkan jawabannya. Seperti biasa, itu bisa diterapkan. Kami memiliki tiga objek, dan kami membandingkannya dalam pernyataan cetak. Hasilnya, kita akan mendapatkan objek itu c1 aku s kurang dari c2, jadi outputnya Benar. Di samping itu, c2 dan c1 adalah lebih baik dari c3; itu sebabnya keduanya False output.
Contoh 02: Tidak Sama dengan Operator
Sekarang membebani Tidak sama (!=) operator perbandingan, Anda akan mendapatkan Benar dalam kasus pernyataan cetak pertama dan kedua karena memenuhi kondisi bahwa kedua objek tidak sama. Sebaliknya, objek 1 menghasilkan sama dengan objek 3, yang tidak memenuhi persyaratan Tidak sama. Itulah mengapa pernyataan cetak ketiga menghasilkan Salah hasil dari.
Contoh 03: Lebih besar dari atau Sama dengan Operator
Mari kita coba contoh yang sama untuk membebani lebih besar dari atau sama untuk operator. Dalam kasus pernyataan cetak pertama, kita memiliki 2 >= 13, yang mana tidak benar; itu sebabnya itu menghasilkan False. Dalam pernyataan cetak kedua dan ketiga, kami mendapat 13>=2 dan 2>=2, masing-masing. Keduanya Benar karena mereka memenuhi kondisi lebih besar dari atau sama dengan.
Coba operator perbandingan lainnya, e.g., lebih signifikan dari, sama dengan, 'kurang dari atau sama dengan,' dalam kode Anda juga.
Membebani Operator Penugasan
Lihat contoh overloading operator penugasan. Kami mengambil contoh serupa dengan kelebihan beban '-=' operator penugasan. Kami telah mendefinisikan dua objek yang memiliki nilai koordinat y dan z. Objek pertama c1 meneruskan nilainya ke 'diri.kamu dan 'diri.z' variabel, masing-masing. Sebaliknya, objek c2 meneruskan nilainya ke 'lain.kamu dan 'lain.z'.
Obyek c1 memiliki nilai diri.y=1 dan diri.z=1 sekarang juga. objeknya c2 nilai 'lain.y = -2' dan 'lain.z = -3' telah diteruskan ke dikurangi dari objek c1 nilai-nilai. Akibatnya, hasil c1 - c2 diri.y - lainnya.y = 1-(-2) dan diri.z - lainnya.z = 1-(-3). Hasil perhitungan, yaitu 3 dan 4, telah disimpan ke 'self.x' dan 'diri sendiri.z' karena operator penugasan dari '=.' Saat dicetak, kode ini akan menampilkan hasil objek c1, yang memiliki dua variabel diri.y = 3 dan diri.z = 4.
Kesimpulan
Kami mencoba untuk mencakup semua operator dalam kode Anda untuk pemahaman yang lebih baik tentang Overloading Operator.