Dalam kuliah ini, kita akan belajar tentang kelas, pembina dan pewarisan dalam python.
Konsep-konsep ini sangat penting dalam program besar di mana jenis yang berbeza diperlukan untuk ditakrifkan.
kelas
Kelas adalah penting dalam pengaturcaraan dan ia tidak khusus untuk python. Banyak lagi bahasa pengaturcaraan menyokong tanggapan kelas. Kami menggunakan kelas untuk menentukan jenis data baharu.
Setakat ini, kami telah mempelajari tentang jenis data asas dalam Python seperti nombor, rentetan dan boolean. Ini adalah jenis data asas atau mudah dalam Python. Kami juga telah melihat beberapa jenis data yang kompleks seperti senarai dan kamus.
Walaupun jenis ini sangat berguna, mereka tidak boleh selalu digunakan untuk memodelkan konsep yang kompleks. Sebagai contoh, fikirkan tentang idea mata, atau troli beli-belah. Troli beli-belah bukan boolean atau senarai. Ia adalah jenis data yang berbeza. Jadi kita boleh menggunakan kelas untuk menentukan jenis baharu untuk memodelkan konsep sebenar.
Sekarang, mari kita tentukan jenis data baharu yang dipanggil titik. Jenis baharu ini akan mempunyai kaedah seperti yang kami periksa sebelum ini.
Inilah cara anda akan melakukannya:
Kami mulakan dengan mentakrifkan kelas dengan menggunakan kata kunci "kelas" dan sejurus selepas itu kami memberi nama kelas kami.
class Point
Sekarang, lihat konvensyen penamaan yang saya gunakan di sini. Saya telah menggunakan huruf besar pertama di sini, inilah yang kita panggil konvensyen penamaan pascal. Konvensyen ini berbeza daripada yang kami gunakan untuk menamakan pembolehubah dan fungsi kami yang mana kami sentiasa menggunakan huruf kecil dan memisahkan berbilang perkataan menggunakan garis bawah. Tetapi apabila menamakan kelas, kami tidak menggunakan garis bawah untuk memisahkan berbilang perkataan sebaliknya, kami menggunakan huruf besar pada huruf pertama setiap perkataan.
Selepas menentukan kelas kami, titik bertindih digunakan yang bermaksud bahawa kini blok ditakrifkan.
class Point:
def move (self):
Dalam blok ini, kita boleh menentukan semua fungsi atau kaedah yang dimiliki oleh mata. Sebagai contoh, kita boleh mentakrifkan fungsi yang dipanggil "bergerak" untuk memindahkan titik. Ambil perhatian bahawa sebaik sahaja kami menaip kurungan terbuka, PyCharm secara automatik menambah "diri" di sini. Ini adalah kata kunci istimewa dan izinkan saya kembali kepada ini sebentar lagi. Mari cetak “move” pada terminal.
print("move")
Mari kita tentukan kaedah lain seperti “lukis” dan cetak pada terminal.
def draw(self):
print("draw")
Kami telah selesai dengan definisi kelas "titik" kami. Dengan jenis baharu ini, kita boleh mencipta objek baharu. Kelas hanya mentakrifkan pelan tindakan atau templat untuk mencipta objek yang merupakan contoh sebenar berdasarkan pelan tindakan itu. Untuk mencipta objek, kami menaip nama kelas kami dan kemudian memanggilnya seperti fungsi. Ini mencipta objek baharu dan kemudian mengembalikannya. Kemudian kita boleh menyimpan objek itu dalam pembolehubah. Mari saya tunjukkan kepada anda:
Di sini kami telah mentakrifkan "titik1" yang merupakan titik tiga dimensi. Anda boleh melihatnya, kami boleh mencetak koordinat individu pada terminal.
Kita boleh menggunakan dua kaedah "lukis" dan "bergerak" dengan titik ini.
Jadi untuk meringkaskan, kami menggunakan kelas untuk mentakrifkan jenis baharu dan jenis ini boleh mempunyai kaedah yang kami tentukan dalam badan kelas. Kelas boleh mempunyai atribut yang boleh kami tetapkan di mana-mana dalam program kami.
Pembina
Setakat ini, kami telah mempelajari cara mencipta jenis baharu menggunakan kelas. Sekarang terdapat masalah kecil dengan pelaksanaan ini. Kita boleh mencipta objek titik tanpa koordinat x atau y menggunakan kelas dan itu tidak sesuai. Mari saya tunjukkan kepada anda.
Mari kita buat titik dan cetak sebelum kita menetapkan koordinat x. Menjalankan program kami menghasilkan ralat atribut seperti ini:
Ini bermakna objek titik tidak mempunyai atribut yang dipanggil x. Sekarang masalahnya ialah mungkin untuk mempunyai objek titik tanpa koordinat x atau y. Ini tidak masuk akal kerana setiap kali kita bercakap tentang sesuatu perkara, kita perlu tahu di mana titik itu berada. Untuk menyelesaikan masalah ini, kami menggunakan pembina. Pembina ialah fungsi yang dipanggil pada masa mencipta objek.
Inilah cara kami menggunakan pembina. Pertama, mari kita lulus nilai koordinat x dan y dalam atur cara di atas.
point = Point(10, 20)
print(point.x)
Sekarang, kita perlu menambah kaedah khas dalam kelas ini dipanggil pembina. Sintaksnya adalah seperti ini:
def __init__(self, x, y):
init
adalah singkatan untuk dimulakan, dan ini ialah fungsi atau kaedah yang dipanggil apabila objek titik baharu dicipta. x dan y ditambah sejurus selepas itu self
untuk menambah dua parameter tambahan.
Selepas itu, kita harus memetakan x dan y kepada nilai yang diluluskan iaitu 10 dan 20
self.x = x
self.y = y
Kami menggunakan self
untuk merujuk kepada objek semasa dan kemudian kami menetapkan atribut x kepada hujah x yang dihantar kepada fungsi "x". Dengan cara ini, menggunakan init
kaedah, kita boleh memulakan objek kita. Kaedah ini dirujuk sebagai pembina. Jom jalankan program kami.
Sekarang, kita boleh menukar koordinat x dan y kemudian. Mari kemas kini x koordinat:
point = Point(10, 20)
point.x = 11
print(point.x)
Kini, koordinat x dikemas kini kepada nilai 11.
Senaman
Berikut adalah latihan yang menarik untuk anda.
Saya mahu anda menentukan jenis baharu yang dipanggil orang. Objek "Orang" ini harus mempunyai "name
atribut " serta "talk()
Kaedah.
Ia adalah tugas yang mudah dan tidak boleh mengambil masa lebih daripada beberapa minit.
Penyelesaian
Mulakan dengan menentukan kelas "Orang" seperti ini:
class Person:
self.name = name
Kami akan menentukan pembina kemudian. Sekarang, kita boleh mencipta objek "Orang". Mari kita panggil John
john = Person("John Smith")
print(john.name)
john.talk()
Sekarang, pergi ke bahagian pertama kod dan buat pembina.
def __init__(self, name):
Kod akhir akan kelihatan seperti ini:
Anda juga boleh menggunakan rentetan terformat dan konsep lain bersama-sama dengan kelas dan pembina.
Pusaka
Warisan ialah konsep lain yang dikaitkan dengan kelas yang membolehkan anda menggunakan semula kod.
Pertimbangkan sekeping kod ini.
class Dog:
def walk(self):
print("walk")
Kami telah mencipta kelas "Anjing" dengan kaedah "berjalan". Dalam kaedah ini, kami hanya mencetak mesej berjalan pada terminal. Katakan, dalam program sebenar, Terdapat 10 baris kod dan bukannya hanya satu baris di sini. Pada masa hadapan, jika kelas lain diperlukan untuk mempunyai kaedah "berjalan", kami perlu mengulangi semua kod itu. Ini tidak ideal.
Dalam pengaturcaraan, kami mempunyai prinsip yang dipanggil DRY iaitu kependekan dari don't repeat yourself. Katakan pada masa akan datang, kami menemui masalah dengan kaedah "berjalan" kami dan jika kami telah mengulangi atau menduplikasi kaedah ini di banyak tempat lain, kami perlu kembali dan menyelesaikan masalah itu di setiap tempat yang kami telah menduplikasi ini kod. Oleh itu, dalam pengaturcaraan kita tidak sepatutnya menentukan sesuatu dua kali.
Terdapat pendekatan yang berbeza untuk menyelesaikan masalah ini tetapi di sini kita akan mempelajari pendekatan yang lebih mudah untuk pemula dan ia dipanggil warisan. Dalam kes ini, kami akan mencipta kelas "mamalia" lain dan mentakrifkan atribut "berjalan" kami dalam kelas itu.
class Mammal:
def walk(self):
print("walk")
Selepas menentukan kelas "Mamalia" kami, kami boleh menggunakan warisan untuk lulus atribut seperti ini:
Kedua-dua kelas anjing dan kucing mewarisi semua kaedah kelas yang ditakrifkan dalam kelas induk mereka. Sekarang, kita boleh menambah kaedah khusus untuk anjing seperti ini:
class Dog:
def bark(self):
print("bark")
Bungkus!
Ini semua tentang kelas, pembina dan menggunakan semula kod dalam kelas dengan konsep pewarisan. Kini kami menghampiri penghujung siri kami. Pada ketika ini, anda sepatutnya dapat menghasilkan kod yang baik, boleh dibaca dan ringkas dalam Python.
Kita akan melihat konsep modul dan pakej dalam kuliah akan datang.
Sila tinggalkan balasan anda