Dari kursus: Pelatihan Esensial Python
Pewarisan
- Anakku, suatu hari, semua ini akan menjadi milikmu. Warisan Anda. (musik halus) Jadi Anda lihat, dalam ilmu komputer dan Python, sebuah kelas dapat memperluas kelas lain. Kelas asli disebut kelas induk, dan kelas yang memperluasnya adalah kelas anak. Dan kelas anak mewarisi semua metode dan atribut kelas induk. Tetapi pewarisan ini terjadi secara otomatis ketika kelas anak dibuat. Mari kita pergi ke kode. -Ya. - [Instruktur] Di sini, kami memiliki kelas anjing yang kami gunakan sebelumnya, dan mengatakan kami ingin menggunakan ini untuk membuat kelas chihuahua, yang merupakan jenis anjing kecil. Inilah cara kami dapat melakukannya. Anjing Chihuahua kelas. Dan mari kita tambahkan pass untuk saat ini. Kami menggunakan tanda kurung ini setelah nama kelas untuk menunjukkan bahwa kelas ini memperluas kelas induk anjing. Dan untuk saat ini, mari kita tidak menambahkan apa pun lagi. Cukup tulis pass untuk mendapatkan kelas ini di tempatnya. Jadi kita dapat menggunakan ini untuk membuat Chihuahua baru, dan Anda dapat melihat bahwa ia memiliki semua atribut dan metode dari kelas induk anjing. Jadi Chihuahua, sebut saja Roxy, dan anjing dot berbicara. Hmm, sepertinya itu tidak benar. Pernahkah Anda benar-benar mendengar chihuahua mengatakan gonggongan? Mari kita perbaiki ini. Mari kita perluas metode ini, cetak. Mari kita gunakan f-string untuk ini. Nama titik sendiri mengatakan yap, yap, yap. Oke. Jauh lebih baik. Jika kelas anak, chihuahua, mendefinisikan atribut atau metode apa pun yang bertentangan dengan kelas induk, metode kelas induk akan ditimpa, dan metode kelas anak digunakan sebagai gantinya. Jadi Anda dapat melihat bahwa kita bisa membuat anjing yang sebenarnya masih Anjing saya sama dengan anjing, Rover, anjing saya dot berbicara, dan itu masih mengatakan gonggongan. Kita juga dapat menambahkan metode tambahan ke kelas anak. Misalnya, kita bisa melakukan ini, mengibaskan ekor, mencetak goyangan yang kuat. Oke, jadi sekarang chihuahua kita harus memiliki metode wagtail. Wagtail. Hebat. Jadi ini bisa sangat berguna jika, misalnya, ada kelas yang benar-benar ingin Anda gunakan, tetapi hanya perlu beberapa penyesuaian atau mungkin metode tambahan atau semacamnya. Kita bahkan dapat melakukan ini dengan kelas bawaan Python sendiri. Ingat, di Python, Anda dapat membuat instance daftar baru dengan memanggilnya seperti ini. Daftar saya sama dengan daftar, oke? Dan meskipun ini huruf kecil, dan terlihat seperti fungsi, list sebenarnya adalah kelas. Jadi katakanlah kita ingin membuat daftar yang menjamin bahwa semua item yang ditambahkan padanya adalah unik. Sedikit seperti satu set. Kita dapat memperluas kelas daftar dan membuat kelas daftar unik kita sendiri. Daftar unik kami memperluas daftar, oke. Kemudian kita akan mengganti fungsi append. Tambahkan item diri, jika item di self, kembalikan item tambahkan titik sendiri. Oke, tapi tunggu, tidak secepat itu. Kita memanggil self dot append, yang akan memanggil fungsi yang sama persis di sini. Ini adalah self dot append, dan ini akan mengarah pada rekursi tak terbatas atau loop yang tidak pernah berakhir dan merusak program kita. Apa yang sebenarnya ingin kita lakukan adalah memanggil append di kelas induk, kelas daftar asli. Dalam hal ini, kita dapat menggunakan fungsi yang disebut super, yang mendapatkan instance yang mendasari kelas induk, dan kita akan memanggil super dot append. Jadi mari kita coba ini. Daftar unik sama dengan daftar unik. Jadi kami membuat daftar baru. Mari kita lakukan daftar unik dot tambahkan satu, tambahkan satu, tambahkan dua, dan cetak daftar unik. Dan Anda dapat melihat bahwa meskipun kami menambahkan satu dua kali, itu hanya merekamnya sekali. Ada juga kasus penggunaan lain yang sangat umum di mana super digunakan, dan itu ada di konstruktor. Jadi, katakanlah Anda ingin menambahkan atribut lain ke instance kelas anak Anda, kita dapat melakukan sesuatu seperti ini, init self, self dot beberapa properti sama dengan daftar unik. Oke, jadi masalahnya adalah kita benar-benar menimpa konstruktor dan kelas induk sekarang, di mana mungkin memiliki beberapa hal yang sangat penting yang perlu diinisialisasi. Kita bisa mengatasinya dengan menggunakan super lagi. Init, oke, dan ini memastikan bahwa konstruktor induk dipanggil terlebih dahulu, dan kemudian kita menambahkan properti baru kita, dan kita dapat melihatnya ketika kita membuat instance ini. Mari kita cetak beberapa properti. Itu dia. Ekstensi kelas mungkin terlihat rumit pada awalnya, tetapi ini adalah alat yang sangat elegan dan kuat yang dapat memecahkan banyak masalah pengkodean yang sangat rumit. Anda tentu tidak memerlukan pengacara perkebunan untuk mencari tahu warisan.
Berlatih sambil belajar dengan file latihan
Unduh file yang digunakan instruktur untuk mengajarkan kursus. Simak dan pelajari dengan melihat, mendengarkan, dan berlatih.