Python

Polimorfisme di Python

Polimorfisme di Python
Polimorfisme bermaksud “banyak bentuk.Polimorfisme merupakan ciri penting Pengaturcaraan Berorientasikan Objek (OOP).  Apabila kaedah yang sama dinyatakan berulang kali, untuk pelbagai tujuan, dan dalam kelas yang berbeza, maka ia disebut polimorfisme. Satu lagi ciri OOP adalah harta pusaka, melalui mana kelas anak dapat dibuat dengan mewarisi ciri kelas induk. Kadang-kadang, ia memerlukan pengaturcara untuk menyatakan kaedah dengan nama yang sama di kedua kelas ibu bapa dan anak untuk pelbagai tujuan. Tugas jenis ini juga dapat dilaksanakan dengan menggunakan polimorfisme. Artikel ini menerangkan bagaimana polimorfisme dapat ditentukan dalam pengaturcaraan berorientasikan objek (OOP).

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.

Trackpad dan Mouse Pointer pada skrin Windows AppyMouse untuk Tablet Windows
Pengguna tablet sering kehilangan penunjuk tetikus, terutama ketika mereka biasa menggunakan komputer riba. Telefon pintar dan tablet skrin sentuh dil...
Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...
Cara menukar butang tetikus Kiri & Kanan pada PC Windows 10
Sudah menjadi kebiasaan bahawa semua peranti tetikus komputer dirancang secara ergonomik untuk pengguna tangan kanan. Tetapi ada peranti tetikus yang ...