Contoh 1: Polimorfisme dengan Fungsi dan Objek
Skrip berikut menunjukkan penggunaan polimorfisme antara dua kelas yang berbeza. Fungsi digunakan untuk membuat objek kelas tersebut. Nilai pemboleh ubah yang dinamakan warna dimulakan di __di dalamnya__() kaedah kedua 'Burung nuri' dan juga 'Burung unta'kelas pada masa penciptaan objek. The ciri-ciri() kaedah ditentukan dalam kedua-dua kelas, tetapi output kaedah untuk setiap kelas sedikit berbeza. The Buat_Objek () fungsi digunakan untuk membuat objek kelas. Fungsi ini dijalankan dua kali untuk membuat objek di 'Burung nuri'kelas dan di'Burung unta'kelas. Masing-masing akan memanggil kaedah fitur () kedua-dua kelas dan mencetak hasilnya.
#!/ usr / bin / env python3# Tentukan kelas Parrot
Parrot kelas ():
def __init __ (diri, warna):
diri.warna = warna
ciri def (diri):
cetak ("Warna Parrot adalah% s"% diri.warna)
cetak ("Burung nuri boleh terbang")
# Tentukan kelas burung unta
burung unta kelas ():
def __init __ (diri, warna):
diri.warna = warna
ciri def (diri):
cetak ("Warna burung unta adalah% s"% diri.warna)
cetak ("Burung Burung Unta tidak boleh terbang")
# Tentukan fungsi untuk memanggil kaedah kelas
def Create_Object (Objek):
Objek.ciri-ciri()
# Buat objek kelas Parrot
Buat_Objek (Parrot ('Hijau'))
# Buat objek kelas Burung unta
Buat_Objek (Burung Unta ('Hitam dan Putih'))
Pengeluaran
Output berikut menunjukkan bahawa objek 'Burung nuri'kelas dibuat dengan'Hijau'sebagai warna nilai. Fungsi mencetak output dengan memanggil ciri-ciri() kaedah 'Burung nuri'kelas. Seterusnya, objek 'Burung unta'kelas dibuat dengan'Hitam dan putih'sebagai warna nilai. Fungsi mencetak output dengan memanggil ciri-ciri() kaedah 'Burung unta'kelas.
Contoh 2: Polimorfisme dalam Kaedah Kelas Tidak Berkaitan
Seperti contoh sebelumnya, skrip berikut menunjukkan penggunaan polimorfisme dalam dua kelas yang berbeza, tetapi tidak ada fungsi khusus yang digunakan untuk menyatakan objek. The __di dalamnya__() kaedah kedua 'Pengurus'dan'Keranikelas akan memulakan pemboleh ubah yang diperlukan. Polimorfisme dilaksanakan di sini dengan mencipta maklumat_keputusan () dan gaji () kaedah di dalam kedua-dua kelas. Kandungan kaedah ini berbeza untuk setiap kelas ini. Seterusnya, pemboleh ubah objek dibuat untuk kedua-dua kelas dan diulang oleh a untuk gelung. Dalam setiap lelaran, maklumat_keputusan () dan gaji () kaedah dipanggil untuk mencetak output.
#!/ usr / bin / env python3# Tentukan kelas bernama Pengurus
Pengurus kelas:
def __init __ (diri, nama, jabatan):
diri.nama = nama
diri.jawatan = 'Pengurus'
diri.jabatan = jabatan
# Tentukan fungsi untuk menetapkan perincian
def post_details (diri):
sekiranya diri.jabatan.atas () == 'HR':
diri.asas = 30000
lain:
diri.asas = 25000
diri.rumahRent = 10000
diri.pengangkutan = 5000
cetak ("Catatan% s adalah% s"% (diri sendiri.nama, diri.jawatan))
# Tentukan fungsi untuk mengira gaji
gaji def (diri):
gaji = diri.asas + diri.rumahSewa + diri.pengangkutan
gaji balik
# Tentukan kelas bernama Kerani
Kerani kelas:
def __init __ (diri, nama):
diri.nama = nama
diri.jawatan = 'Kerani'
# Tentukan fungsi untuk menetapkan perincian
def post_details (diri):
diri.asas = 10000
diri.pengangkutan = 2000
cetak ("Catatan% s adalah% s"% (diri sendiri.nama, diri.jawatan))
# Tentukan fungsi untuk mengira gaji
gaji def (diri):
gaji = diri.asas + diri.pengangkutan
gaji balik
# Buat objek untuk kelas
pengurus = Pengurus ("Kabir", "jam")
kerani = Kerani ("Robin")
# Panggil fungsi yang sama dari pelbagai kelas
untuk obj in (pengurus, kerani):
obj.maklumat_keputusan ()
cetak ("Gaji itu", obj.gaji ())
Pengeluaran
Output berikut menunjukkan bahawa objek 'Palungankelas digunakan dalam lelaran pertama dari untuk gelung dan gaji pengurus dicetak setelah pengiraan. Objek 'Keranikelas digunakan dalam lelaran kedua dari untuk gelung dan gaji kerani dicetak setelah pengiraan.
Contoh 3: Polimorfisme dalam Kaedah Kelas Berkaitan
Skrip berikut menunjukkan penggunaan polimorfisme antara dua kelas kanak-kanak. Di sini, kedua-duanya 'Segi tiga'dan'Bulatan'adakah kelas anak dari kelas induk bernama'Geometrik_Bentuk.'Menurut warisan, kelas anak dapat mengakses semua pemboleh ubah dan kaedah kelas induk. The __di dalamnya__() kaedah 'Geometrik_Bentuk'Kelas digunakan di kedua kelas kanak-kanak untuk memulakan pemboleh ubah nama dengan menggunakan super () kaedah. Nilai-nilai pangkalan dan ketinggian dari 'Segi tiga'Kelas akan diinisialisasi pada saat penciptaan objek. Dengan cara yang sama, nilai jejariBulatan'Kelas akan diinisialisasi pada saat penciptaan objek. Formula untuk mengira luas segitiga ialah ½ × pangkalan × ketinggian, yang dilaksanakan di kawasan () kaedah 'Segi tiga'kelas. Formula untuk mengira luas bulatan adalah 3.14 × (jejari)2, yang dilaksanakan di kawasan () kaedah 'Bulatan'kelas. Nama kedua-dua kaedah adalah sama, di sini, tetapi tujuannya berbeza. Seterusnya, nilai rentetan akan diambil dari pengguna untuk membuat objek dan memanggil kaedah berdasarkan nilainya. Sekiranya pengguna menaip 'segitiga', maka objek 'Segitiga ' kelas akan dibuat, dan jika pengguna menaip 'bulatan', maka objek dari 'Bulatan' kelas akan dibuat. Sekiranya pengguna menaip teks apa pun tanpa 'segitiga' atau 'lingkaran', maka tidak ada objek yang akan dibuat, dan pesan kesalahan akan dicetak.
#!/ usr / bin / env python3# Tentukan kelas induk
kelas Geometrik_Bentuk:
def __init __ (diri, nama):
diri.nama = nama
# Tentukan kelas kanak-kanak untuk mengira luas segitiga
Segitiga kelas (Geometric_Shape):
def __init __ (diri, nama, pangkalan, tinggi):
super ().__init __ (nama)
diri.asas = asas
diri.tinggi = tinggi
kawasan def (diri):
hasil = 0.5 * diri.asas * diri.ketinggian
cetak ("\ nLuas% s =% 5.2f "% (diri.nama, hasil))
# Tentukan kelas kanak-kanak untuk mengira luas bulatan
Bulatan kelas (Geometric_Shape):
def __init __ (diri, nama, jejari):
super ().__init __ (nama)
diri.jejari = jejari
kawasan def (diri):
hasil = 3.14 * diri.jejari ** 2
cetak ("\ nLuas% s =% 5.2f "% (diri.nama, hasil))
cal_area = input ("Kawasan mana yang anda mahu hitung? segitiga / bulatan \ n ")
jika cal_area.atas () == 'TRIANGLE':
base = float (input ('Masukkan pangkal segitiga:'))
tinggi = terapung (masukan ('Masukkan ketinggian segitiga:'))
obj = Segitiga ('Segitiga', pangkal, tinggi)
obj.kawasan ()
elif cal_area.atas () == 'LINGKARAN':
radius = float (input ('Masukkan jejari bulatan:'))
obj = Bulatan ('Bulatan', jejari)
obj.kawasan ()
lain:
cetak ("Input salah")
Pengeluaran
Dalam output berikut, skrip dilaksanakan dua kali. Kali pertama, segi tiga diambil sebagai input dan objek diinisialisasi oleh tiga nilai, 'Segi tiga', pangkalan, dan ketinggian. Nilai-nilai ini kemudian digunakan untuk mengira luas segitiga dan output akan dicetak. Kali kedua, bulatan diambil sebagai input, dan objek diinisialisasi oleh dua nilai, 'Bulatan'dan jejari. Nilai-nilai ini kemudian digunakan untuk mengira luas bulatan dan output akan dicetak.
Kesimpulannya
Artikel ini menggunakan contoh mudah untuk menerangkan tiga penggunaan polimorfisme yang berbeza di Python. Konsep polimorfisme juga dapat diterapkan tanpa kelas, kaedah yang tidak dijelaskan di sini. Artikel ini membantu pembaca untuk mengetahui lebih lanjut mengenai cara menerapkan polimorfisme dalam pengaturcaraan Python berdasarkan objek.