Warisan Python
- 2028
- 119
- Darryl Ritchie
Perkenalan
Warisan adalah konsep kunci lain dalam pemrograman berorientasi objek, dan memainkan peran penting dalam membangun kelas. Ini memungkinkan kelas untuk didasarkan pada yang sudah ada.
Ketika Anda pertama kali mulai menulis kelas Python, Anda diberitahu untuk hanya meletakkan "objek" dalam tanda kurung dari definisi kelas dan tidak terlalu memikirkannya. Nah, sekarang saatnya untuk mulai memikirkannya.
"Objek" sebenarnya adalah kelas dasar yang diwariskan semua kelas Python. Ini mendefinisikan serangkaian fungsionalitas dasar yang harus dimiliki semua kelas Python. Dengan mewarisi darinya saat Anda membuat kelas baru, Anda memastikan bahwa kelas itu memiliki fungsi dasar itu.
Singkatnya, warisan adalah cara yang bagus untuk mengkategorikan kelas dan memastikan bahwa Anda tidak perlu mengulangi diri sendiri.
Apa itu warisan?
Warisan juga ada di dunia nyata. Pasangan pemandu pertama menggunakan mobil sebagai contoh kelas. Nah, bagaimana jika Anda menginginkan jenis mobil yang lebih spesifik yang semuanya berbagi prinsip -prinsip dasar mobil itu? Warisan dapat membantu.
Anda dapat memulai dengan kelas "mobil" dasar yang memiliki semua properti yang setiap mobil berbagi. Ini semua akan sangat umum.
Setelah Anda memiliki "mobil" Anda, Anda dapat membuat kelas baru dan lulus "mobil."Mereka semua akan memiliki properti yang sama dengan kelas" mobil "dasar. Kemudian, Anda dapat menambahkan properti tambahan yang Anda inginkan ke kelas yang lebih khusus. Misalnya, Anda dapat memiliki kelas "truk," "mobil otot," dan "SUV" yang semuanya mewarisi dari "mobil."
Ketika Anda memikirkannya dalam istilah dunia nyata, truk, mobil otot, dan SUV semuanya memiliki sifat dasar yang sama dengan mobil lainnya, tetapi mereka juga memiliki sifat khusus.
Anda juga dapat berspesialisasi lebih lanjut. Ada banyak jenis truk. Jadi, Anda dapat membuat kelas yang lebih khusus yang mewarisi dari “truk."Semuanya akan dimulai dengan segala sesuatu dari" mobil "dan semuanya dari" truk."
Menggunakan warisan dalam python
Baiklah, jadi sekarang Anda bisa mencoba ini dengan beberapa kode nyata. Siapkan kelas "mobil" dasar yang mewarisi dari "objek.“Coba bekerja dengan contoh di bawah ini.
Mobil kelas (objek): def __init __ (self, make = 'ford', model = 'pinto', tahun = '1971', mileage = 253812, color = 'oranye'): self.__make = buat diri.__model = Model Self.__year = tahun diri.__mileage = jarak tempuh diri.__color = color def move_forward (self, speed): cetak (" %s Anda bergerak maju pada %s" %(self.__model, speed)) def move_backward (self, speed): print ("bergerak mundur pada % s" % speed) class musclecar (car): __hp = 300 def set_hp (self, hp): self.__hp = hp def get_hp (self): return self.__hp def drag_race (self, lawan): if (self.__hp> lawan.get_hp ()): kembalikan "Anda menang!"lain: kembalikan" kamu kalah!"MyNewCar = Musclecar ('Ford', 'Mustang', '2016', 3000, 'Red') MyNewcar.set_hp (687) lawan = musclecar ('ford', 'mustang', '2014', 6400, 'hijau') lawan.set_hp (465) mynewcar.cetak move_forward ('25mph') (mynewcar.drag_race (lawan))
Perhatikan bahwa Musclecar
objek dapat menggunakan konstruktor dan maju kedepan
Metode dari kelas "mobil" meskipun kelas yang mereka injak tidak secara eksplisit memilikinya.
Utama
Hanya karena kelas mewarisi dari yang lain, Anda tidak terjebak dengan semua fungsionalitas kelas induk. Anda dapat menimpa bagian -bagian dari kelas orang tua dalam kelas anak. Perubahan yang diterapkan pada kelas anak tidak akan berlaku untuk kelas orang tua asli, jadi Anda tidak perlu khawatir tentang mengacaukan kelas lain.
Dalam contoh di atas, "musclecar" baru saja memiliki variabel, __hp
Hanya mengambang di sana tanpa cara mengaturnya. Periksa contoh yang sama, tetapi dengan konstruktor ditimpa.
Mobil kelas (objek): def __init __ (self, make = 'ford', model = 'pinto', tahun = '1971', mileage = 253812, color = 'oranye'): self.__make = buat diri.__model = Model Self.__year = tahun diri.__mileage = jarak tempuh diri.__color = color def move_forward (self, speed): cetak (" %s Anda bergerak maju pada %s" %(self.__model, speed)) def move_backward (self, speed): print ("bergerak mundur pada % s" % speed) kelas musclecar (mobil): def __init __ (self, make = 'ford', model = 'mustang', tahun = tahun = '1965', jarak tempuh = 54032, warna = 'biru', hp = 325): self.__make = buat diri.__model = Model Self.__year = tahun diri.__mileage = jarak tempuh diri.__color = warnanya diri.__hp = hp def set_hp (self, hp): self.__hp = hp def get_hp (self): return self.__hp def drag_race (self, lawan): if (self.__hp> lawan.get_hp ()): kembalikan "Anda menang!"lain: kembalikan" kamu kalah!"MyNewCar = musclecar ('ford', 'Mustang', '2016', 3000, 'red', 687) lawan = musclecar () mynewcar.cetak move_forward ('25mph') (mynewcar.drag_race (lawan))
Ada dua hal yang perlu diperhatikan. Pertama, __hp
telah menjadi diri sendiri.__hp
dan dimasukkan ke dalam konstruktor. Karena itu, pengaturannya jauh lebih mudah. Kedua, nilai default untuk "musclecar" baru telah diubah. Pinto bukan mobil otot default yang sangat bagus, apakah itu?
Anda dapat melakukan ini dengan variabel atau metode apa pun di kelas subkelas atau anak. Ini menambah tingkat fleksibilitas tambahan dan mencegah Anda terkunci dalam fungsionalitas induk atau kelas super.
Metode super
Terkadang, Anda perlu mengakses metode yang ditemukan di kelas induk dari dalam kelas anak. Ambil contoh sebelumnya yang menimpa konstruktor itu. Banyak kode itu berlebihan. Menggunakan super()
untuk menghubungi konstruktor dari kelas "mobil" menghilangkan redundansi itu dan membuat kelas yang lebih ramping.
super()
juga dapat digunakan untuk mengakses metode reguler untuk digunakan dalam metode subkelas. Contoh di bawah ini digunakan super()
keduanya.
Mobil kelas (objek): def __init __ (self, make = 'ford', model = 'pinto', tahun = '1971', mileage = 253812, color = 'oranye'): self.__make = buat diri.__model = Model Self.__year = tahun diri.__mileage = jarak tempuh diri.__color = color def set_make (self, make): self.__make = buat def get_make (self): return self.__make def set_model (self, model): self.__model = model def get_model (self): return self.__model def set_year (self, year): self.__year = tahun def get_year (self): return self.__year def set_mileage (self, mileage): self.__mileAge = jarak tempuh def get_mileage (self): return self.__mileage def set_color (self, color): self.__color = color def get_color (self): return self.__color def move_forward (self, speed): cetak (" %s Anda bergerak maju pada %s" %(self.__model, speed)) def move_backward (self, speed): print ("bergerak mundur pada % s" % speed) kelas musclecar (mobil): def __init __ (self, make = 'ford', model = 'mustang', tahun = tahun = '1965', jarak tempuh = 54032, warna = 'biru', hp = 325): super ().__init __ (Make, Model, Year, Mileage, Color) Self.__hp = hp def set_hp (self, hp): self.__hp = hp def get_hp (self): return self.__hp def drag_race (self, lawan): if (self.__hp> lawan.get_hp ()): kembalikan "Anda menang!"lain: kembalikan" kamu kalah!"def trade_up (self, year, color): super ().set_year (tahun) super ().set_color (warna) super ().set_mileage (0) mynewcar = musclecar ('ford', 'mustang', '2016', 3000, 'red', 687) lawan = musclecar () mynewcar.cetak move_forward ('25mph') (mynewcar.drag_race (lawan)) mynewcar.trade_up ('2017', 'hitam') cetak ("mobil otot %s baru saya adalah %s dan memiliki %d mil" %(mynewcar.get_year (), mynewcar.get_color (), mynewcar.get_mileage ()))
Lihatlah cara trade_up
Metode memanfaatkan super()
untuk mengakses dan menghubungi metode setter dari kelas induk.
Menutup pikiran
Warisan memungkinkan Anda untuk menggunakan kelas sebagai templat untuk kelas yang lebih khusus. Anda dapat membangun kelas dalam struktur sedemikian rupa sehingga mulai menyerupai pohon keluarga, dengan anggota yang "lebih tua" dan lebih umum meneruskan sifat -sifat kepada anggota yang lebih "lebih muda".
Sebagian besar pemrograman berorientasi objek adalah mengurangi jumlah kode yang ditulis dan mencegah sebanyak mungkin kode ditulis ulang. Warisan melayani peran besar dalam memungkinkan ini.
Latihan
- Buat kelas dasar yang mewarisi dari kelas "mobil".
- Instantiate kelas baru Anda dan hubungi salah satu metode dari “mobil."
- Buat metode baru di kelas anak Anda.
- Hubungi metode baru Anda.
- Menggunakan
super()
untuk menambahkan variabel ke konstruktor kelas anak Anda. - Buat metode menggunakan
super()
untuk mengakses metode kelas induk. - Hubungi metode baru Anda yang menggunakan
super()
.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Hal -hal yang harus diinstal pada Ubuntu 22.04
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
- Ubuntu 20.04 Panduan
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
- Cara Dual Boot Kali Linux dan Windows 10
- Cara Membangun Aplikasi Tkinter Menggunakan Objek Berorientasi…
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- « Cara melakukan kompresi data yang lebih cepat dengan pBZIP2
- Rekam dan Putar Ulang Sesi Terminal dengan Asciinema di Linux »