Enkapsulasi python

Enkapsulasi python

Pengenalan

Enkapsulasi adalah salah satu aspek asas pengaturcaraan berorientasikan objek. Ia membolehkan pengaturcara lebih baik mengawal bagaimana data mengalir dalam program mereka, dan ia melindungi data tersebut. Enkapsulasi juga menjadikan objek menjadi lebih mandiri dan berfungsi secara bebas.

Konsep enkapsulasi membina apa yang anda lakukan dalam dua panduan terakhir dengan kelas dan pembina. Pembina biasanya digunakan secara rapat dengan enkapsulasi dan sebenarnya membantu membuat kerja enkapsulasi dengan lancar.

Pengubah akses

Sebelum anda dapat memanfaatkan enkapsulasi, anda harus memahami bagaimana Python mengehadkan akses kepada data yang disimpan dalam pembolehubah dan kaedah.

Python mempunyai tahap sekatan yang berbeza yang mengawal bagaimana data dapat diakses dan dari mana. Pembolehubah dan kaedah boleh menjadi awam, swasta, atau dilindungi. Penamaan tersebut dibuat oleh bilangan garis bawah sebelum pembolehubah atau kaedah.

Awam

Setiap pemboleh ubah dan kaedah yang anda lihat setakat ini dengan pengecualian pembina telah awam. Pembolehubah dan kaedah awam boleh diubahsuai secara bebas dan dijalankan dari mana -mana sahaja, sama ada di dalam atau di luar kelas. Untuk membuat pemboleh ubah atau kaedah awam, jangan gunakan garis bawah.

Persendirian

Jawatan peribadi hanya membolehkan pemboleh ubah atau kaedah diakses dari dalam kelas atau objeknya sendiri. Anda tidak dapat mengubah nilai pemboleh ubah peribadi dari luar kelas. Pembolehubah dan kaedah peribadi didahului oleh dua garis bawah. Lihat contoh di bawah.

__Make = 'Dodge'

Cuba gunakan kelas itu dari sebelumnya. Tetapkan pemboleh ubah dalam pembina ke peribadi. Kemudian cuba mencetak salah satu pembolehubah setelah objek telah diterapkan.

kereta kelas (objek): def __init __ (diri, membuat = 'ford', model = 'pinto', tahun = '1971', jarak tempuh = '253812', color = 'oren'): diri.__make = buat diri.__model = Model diri.__year = tahun diri.__mileage = jarak tempuh diri.__color = color def Move_forward (self, Speed): Cetak (" %s anda bergerak ke hadapan pada %s" %(diri.__model, kelajuan)) def move_backward (diri, kelajuan): cetak ("bergerak mundur pada % s" % kelajuan) mycar = car () cetak (mycar.__model) 

Anda akan menerima mesej ralat yang menyatakan bahawa pembolehubah tidak wujud. Ini kerana pemboleh ubah itu adalah peribadi. Sekarang cuba jalankan bergerak_forward kaedah.

kereta saya.bergerak_forward

Semuanya berfungsi dengan baik. Itu kerana pemboleh ubah sedang diakses oleh kaedah dalam kelas, bukan luaran.

Terdapat tangkapan di sini. Python tidak betul -betul mengendalikan pembolehubah yang dilindungi serta bahasa berorientasikan objek lain. Daripada sebenarnya melindungi pembolehubah, ia mengubah nama mereka dalam jurubahasa. Ini membolehkan salinan pembolehubah yang berbeza dibuat dan wujud. Cuba ubah salah satu pembolehubah yang dilindungi di anda kereta saya objek dan mencetaknya.

kereta saya.__model = cetak 'mustang' (mycar.__model) 

Sekarang, nampaknya berfungsi, tetapi apa yang telah dicetak adalah salinan pelik pembolehubah yang dilindungi. Cuba gunakan bergerak_forward kaedah lagi.

kereta saya.bergerak_forward

Ia mencetak nilai asal __model. Pembolehubah wujud secara bebas. Anda dapat menggambarkan ini dengan mencetak objek sebagai kamus. Anda akan melihat dua pembolehubah yang berbeza.

cetak (mycar.__dict__)

Dilindungi

Pembolehubah dan kaedah yang dilindungi sangat serupa dengan yang peribadi. Anda mungkin tidak akan menggunakan pembolehubah atau kaedah yang dilindungi dengan kerap, tetapi masih bernilai mengetahui apa yang mereka ada. Pembolehubah yang dilindungi hanya boleh diakses oleh kelasnya sendiri dan mana -mana kelas yang diperoleh daripadanya. Itu lebih banyak topik untuk kemudian, tetapi hanya sedar bahawa jika anda menggunakan kelas sebagai asas yang lain, pembolehubah yang dilindungi mungkin menjadi pilihan yang baik. Pembolehubah yang dilindungi bermula dengan satu garis bawah.

Apa itu enkapsulasi

Jadi, sekarang anda tahu bagaimana pengubahsuaian akses berfungsi, bahagian seterusnya ini akan kelihatan jelas. Enkapsulasi adalah proses menggunakan pembolehubah peribadi dalam kelas untuk mengelakkan pengubahsuaian data yang tidak disengajakan atau berpotensi berniat jahat. Dengan mengandungi dan melindungi pembolehubah dalam kelas, ia membolehkan kelas dan objek yang dicipta untuk berfungsi sebagai bebas, sendiri yang terkandung, bahagian berfungsi dalam mesin program itu sendiri.

Melalui pembolehubah enkapsulasi dan kaedah tertentu hanya boleh berinteraksi dengan melalui antara muka yang ditetapkan oleh kelas itu sendiri.

Setters dan Getters

Antara muka yang digunakan untuk berinteraksi dengan pembolehubah yang terkandung secara amnya dirujuk sebagai kaedah setter dan getter kerana digunakan untuk menetapkan dan mengambil nilai pembolehubah. Kerana kaedah wujud dalam kelas atau objek, mereka dapat mengakses dan mengubah suai pembolehubah peribadi, sementara anda tidak dapat melakukannya dari luar kelas. Semasa anda meneliti anda kereta saya objek, anda pada dasarnya menggunakan pembina sebagai kaedah setter awal.

Cuba tulis satu set kaedah untuk menetapkan dan dapatkan nilai salah satu daripada kereta saya pembolehubah.

def set_model (self, new_model): diri.__model = new_model def get_model (diri): kembali diri.__model 

Ia mungkin kelihatan seperti banyak kerja tambahan, tetapi ia tidak sukar sama sekali. Secara umumnya, ini adalah bagaimana anda harus menstrukturkan kelas anda dan bekerja dengan pembolehubah kelas.

Pemikiran penutupan

Enkapsulasi adalah sebahagian besar pengaturcaraan berorientasikan objek. Ini adalah sebahagian besar dari apa yang menjadikan objek dalam pengaturcaraan melakukan lebih seperti objek fizikal di dunia nyata. Ia juga berfungsi untuk melindungi data yang disimpan di dalam objek anda dan memberikan kawalan dan konvensyen untuk bagaimana anda harus mengendalikan aliran data masuk dan keluar dari kelas.

Latihan

  1. Buat semua pembolehubah di Kereta kelas peribadi.
  2. Cuba mencetak satu dari luar kelas.
  3. Ubah suai bergerak_forward kaedah untuk menggunakan pemboleh ubah peribadi model, dan memanggilnya.
  4. Buat kaedah setter untuk salah satu pembolehubah.
  5. Gunakan kaedah setter yang anda buat untuk menukar nilai pembolehubah.
  6. Buat kaedah getter untuk pemboleh ubah yang sama dengan kaedah setter.
  7. Gunakan kaedah getter anda untuk mengakses dan mencetak pembolehubah tersebut.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Cara Membina Aplikasi TKInter Menggunakan Objek Berorientasikan ..
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Menguasai Gelung Skrip Bash
  • Ubuntu 20.04 Trik dan Perkara yang Anda Tidak Tahu
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Ubuntu 20.04 Panduan
  • Asas matematik komputer: binari, perpuluhan, heksadesimal, oktal