Polimorfisme di Python (dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai polimorfisme, pelbagai jenis polimorfisme, dan bagaimana kita dapat menerapkannya di Python dengan bantuan contoh.

Apa itu Polimorfisme?

Makna harfiah polimorfisme adalah keadaan kejadian dalam bentuk yang berbeza.

Polimorfisme adalah konsep yang sangat penting dalam pengaturcaraan. Ini merujuk kepada penggunaan entiti jenis tunggal (kaedah, pengendali atau objek) untuk mewakili pelbagai jenis dalam senario yang berbeza.

Mari kita ambil contoh:

Contoh 1: Polimorfisme sebagai pengendali tambahan

Kami tahu bahawa +pengendali digunakan secara meluas dalam program Python. Tetapi, ia tidak mempunyai satu penggunaan.

Untuk jenis data integer, +operator digunakan untuk melakukan operasi penambahan aritmetik.

 num1 = 1 num2 = 2 print(num1+num2) 

Oleh itu, program di atas menghasilkan 3.

Begitu juga, untuk jenis data rentetan, +operator digunakan untuk melakukan penggabungan.

 str1 = "Python" str2 = "Programming" print(str1+" "+str2) 

Hasilnya, program di atas menghasilkan Pengaturcaraan Python.

Di sini, kita dapat melihat bahawa satu operator +telah digunakan untuk menjalankan operasi yang berbeza untuk jenis data yang berbeza. Ini adalah salah satu kejadian polimorfisme yang paling sederhana di Python.

Fungsi Polimorfisme di Python

Terdapat beberapa fungsi di Python yang serasi untuk dijalankan dengan pelbagai jenis data.

Salah satu fungsi tersebut adalah len()fungsi. Ia boleh dijalankan dengan banyak jenis data di Python. Mari lihat beberapa contoh kes penggunaan fungsi.

Contoh 2: Fungsi len () polimorfik

 print(len("Programiz")) print(len(("Python", "Java", "C"))) print(len(("Name": "John", "Address": "Nepal"))) 

Pengeluaran

 9 3 2 

Di sini, kita dapat melihat bahawa banyak jenis data seperti rentetan, senarai, tuple, set, dan kamus dapat berfungsi dengan len()fungsi tersebut. Walau bagaimanapun, kita dapat melihat bahawa ia mengembalikan maklumat khusus mengenai jenis data tertentu.

Polimorfisme dalam len () berfungsi di Python

Polimorfisme Kelas di Python

Polimorfisme adalah konsep yang sangat penting dalam Pengaturcaraan Berorientasikan Objek.

Untuk mengetahui lebih lanjut mengenai OOP di Python, lawati: Pengaturcaraan Berorientasikan Objek Python

Kita boleh menggunakan konsep polimorfisme sambil membuat kaedah kelas kerana Python membolehkan kelas yang berbeza mempunyai kaedah dengan nama yang sama.

Kita kemudiannya dapat membuat generalisasi memanggil kaedah ini dengan mengabaikan objek yang sedang kita kerjakan. Mari lihat contoh:

Contoh 3: Polimorfisme dalam Kaedah Kelas

 class Cat: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a cat. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Meow") class Dog: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a dog. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Bark") cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) for animal in (cat1, dog1): animal.make_sound() animal.info() animal.make_sound() 

Pengeluaran

Meow saya kucing. Nama saya Kitty. Saya berumur 2.5 tahun. Meow Bark Saya adalah anjing. Nama saya Fluffy. Saya berumur 4 tahun. Kulit kayu

Di sini, kami telah membuat dua kelas Catdan Dog. Mereka mempunyai struktur yang serupa dan mempunyai nama kaedah yang sama info()dan make_sound().

Walau bagaimanapun, perhatikan bahawa kami belum membuat superclass biasa atau menghubungkan kelas dengan cara apa pun. Walaupun begitu, kita dapat memasukkan dua objek yang berbeza ini ke dalam tuple dan mengulanginya menggunakan pemboleh ubah haiwan biasa. Ia mungkin berlaku kerana polimorfisme.

Polimorfisme dan Warisan

Seperti dalam bahasa pengaturcaraan lain, kelas anak di Python juga mewarisi kaedah dan atribut dari kelas induk. Kita boleh mentakrifkan semula kaedah dan atribut tertentu secara khusus agar sesuai dengan kelas anak, yang dikenali sebagai Kaedah Mengganti .

Polimorfisme membolehkan kita mengakses kaedah dan atribut yang diganti ini yang mempunyai nama yang sama dengan kelas induk.

Mari lihat contoh:

Contoh 4: Kaedah Menindih

 from math import pi class Shape: def __init__(self, name): self.name = name def area(self): pass def fact(self): return "I am a two-dimensional shape." def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.length = length def area(self): return self.length**2 def fact(self): return "Squares have each angle equal to 90 degrees." class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi*self.radius**2 a = Square(4) b = Circle(7) print(b) print(b.fact()) print(a.fact()) print(b.area()) 

Pengeluaran

Lingkaran Saya adalah bentuk dua dimensi. Kotak mempunyai setiap sudut sama dengan 90 darjah. 153.93804002589985

Di sini, kita dapat melihat bahawa kaedah seperti __str__(), yang belum diganti dalam kelas anak, digunakan dari kelas induk.

Oleh kerana polimorfisme, jurubahasa Python secara automatik menyedari bahawa fact()kaedah untuk objek a(kelas Square) diganti. Jadi, ia menggunakan yang ditentukan dalam kelas kanak-kanak.

Sebaliknya, kerana fact()kaedah untuk objek b tidak diganti, ia digunakan dari kelas Parent Shape.

Polimorfisme dalam kelas ibu bapa dan anak di Python

Catatan : Kaedah Overloading , cara untuk membuat pelbagai kaedah dengan nama yang sama tetapi argumen yang berbeza, tidak mungkin dilakukan di Python.

Artikel menarik...