Kelas dan Objek Python - Pengaturcaraan Berorientasikan Objek



Blog ini di 'Python Class' membincangkan asas-asas kelas, atribut dan pelbagai konsep OOPS seperti pewarisan, polimorfisme dan enkapsulasi.

Setelah Stack Overflow meramalkan bahawa pada tahun 2019, Python akan mengungguli bahasa lain dari segi pembangun aktif, permintaan untuk hanya berkembang.Python mengikuti paradigma pengaturcaraan berorientasikan objek. Ini berkaitan dengan menyatakan kelas python, membuat objek dari mereka dan berinteraksi dengan pengguna. Dalam bahasa berorientasikan objek, program ini dibahagikan kepada objek mandiri atau anda boleh mengatakannya kepada beberapa program mini. Setiap objek mewakili bahagian aplikasi yang berbeza yang dapat berkomunikasi sesama mereka.
Dalam blog kelas python ini, anda akan memahami setiap aspek kelas dan objek mengikut urutan berikut:

Mari kita mulakan.:-)





Apa itu Kelas Python?

Kelas dalam python adalah cetak biru dari mana objek tertentu dibuat. Ini membolehkan anda menyusun perisian anda dengan cara tertentu. Di sini timbul persoalan bagaimana? Kelas membolehkan kita mengelompokkan data dan berfungsi secara logik dengan cara yang mudah digunakan semula dan cara untuk membangun jika perlu. Pertimbangkan gambar di bawah.

ClassesAndObjects - Python class - EdurekaPada gambar pertama (A), ia menggambarkan cetak biru rumah yang boleh dianggap sebagai Kelas . Dengan cetak biru yang sama, kita dapat membuat beberapa rumah dan ini boleh dianggap sebagai Objek . Dengan menggunakan kelas, anda dapat menambahkan konsistensi pada program anda agar dapat digunakan dengan cara yang lebih bersih dan cekap. Atributnya adalah anggota data (pemboleh ubah kelas dan pemboleh ubah contoh) dan kaedah yang diakses melalui notasi titik.



  • Pemboleh ubah kelas adalah pemboleh ubah yang dikongsi oleh semua objek / keadaan kelas yang berbeza.
  • Pemboleh ubah contoh adalah pemboleh ubah yang unik untuk setiap contoh. Ia ditentukan dalam kaedah dan hanya milik contoh kelas semasa.
  • Kaedah juga disebut sebagai fungsi yang didefinisikan dalam kelas dan menggambarkan tingkah laku objek.

Sekarang, mari kita maju dan melihat bagaimana ia berfungsi di PyCharm. Untuk memulakan, lihat dahulu sintaks kelas python.

Sintaks :

class_name class: statement-1. . penyataan-N

Di sini, ' kelas ” penyataan mewujudkan definisi kelas baru. Nama kelas segera mengikuti kata kunci “ kelas ” dalam ular sawa yang diikuti oleh usus besar. Untuk membuat kelas di python, pertimbangkan contoh di bawah:



pekerja kelas: lulus #no atribut dan kaedah emp_1 = pekerja () emp_2 = pekerja () pemboleh ubah #instance boleh dibuat secara manual emp_1.first = 'aayushi' emp_1.last = 'Johari' emp_1.email='aayushi@edureka.co 'emp_1.pay = 10000 emp_2.first =' test 'emp_2.last =' abc 'emp_2.email='test@company.com' emp_2.pay = cetakan 10000 (emp_1.email) (emp_2.email)

Pengeluaran -

aayushi@edureka.co test@company.com

Sekarang, bagaimana jika kita tidak mahu menetapkan pemboleh ubah ini secara manual. Anda akan melihat banyak kod dan juga terdedah kepada kesalahan. Jadi untuk menjadikannya automatik, kita dapat menggunakan kaedah 'init'. Untuk itu, mari kita fahami apa sebenarnya kaedah dan atribut dalam kelas python.

Kaedah dan Atribut dalam Kelas Python

Sekarang membuat kelas tidak lengkap tanpa beberapa fungsi. Jadi fungsi dapat ditentukan dengan menetapkan pelbagai atribut yang bertindak sebagai wadah untuk data dan fungsi yang berkaitan dengan atribut tersebut. Fungsi dalam ular sawa juga disebut sebagai Kaedah . Bercakap mengenai di dalamnya kaedah , itu adalah fungsi khas yang dipanggil setiap kali objek baru kelas itu dibuat. Anda boleh menganggapnya sebagai kaedah menginisialisasi atau anda boleh menganggapnya sebagai pembina jika anda berasal dari latar belakang pengaturcaraan berorientasikan objek lain seperti C ++, Java dll. Sekarang apabila kita menetapkan kaedah di dalam kelas, mereka akan menerima contoh secara automatik. Mari maju dengan kelas python dan terima nama depan, nama belakang dan gaji menggunakan kaedah ini.

pekerja kelas: def __init __ (diri, pertama, terakhir, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + terakhir + '@ company.com' emp_1 = pegawai ('aayushi', 'johari', 350000) emp_2 = pekerja ('test', 'test', 100000) cetak (emp_1.email) cetak (emp_2.email)

Sekarang dalam kaedah 'init' kami, kami telah menetapkan pemboleh ubah contoh ini (diri, pertama, terakhir, sal). Diri adalah contoh yang bermaksud setiap kali kita menulis self.fname = pertama, ia sama dengan emp_1.first = 'aayushi'. Kemudian kami telah membuat contoh kelas pekerja di mana kami dapat melepasi nilai yang ditentukan dalam kaedah init. Kaedah ini mengambil contoh sebagai hujah. Daripada melakukannya secara manual, ia akan dilakukan secara automatik sekarang.

menggabungkan pelaksanaan semacam c ++

Seterusnya, kami mahukan kemampuan untuk melakukan beberapa jenis tindakan. Untuk itu, kami akan menambah a kaedah ke kelas ini. Katakan saya mahu fungsi tersebut memaparkan nama penuh pekerja. Oleh itu mari kita laksanakan ini secara praktikal.

pekerja kelas: def __init __ (diri, pertama, terakhir, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + terakhir + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) emp_1 = pegawai ('aayushi', 'johari', 350000) emp_2 = pekerja ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Pengeluaran-

aayushi.johari@company.com test.test@company.com aayushijohari testtest

Seperti yang anda lihat di atas, saya telah membuat kaedah yang disebut 'nama penuh' dalam kelas. Oleh itu, setiap kaedah di dalam kelas python secara automatik mengambil contoh sebagai argumen pertama. Sekarang dalam kaedah ini, saya telah menulis logik untuk mencetak nama penuh dan mengembalikannya sebagai ganti nama depan dan nama belakang emp_1. Seterusnya, saya telah menggunakan 'diri' agar dapat berfungsi dengan semua keadaan. Oleh itu untuk mencetak ini setiap masa, kami menggunakan a kaedah .

Melangkah ke hadapan dengan kelas Python, terdapat pemboleh ubah yang dikongsi di antara semua contoh kelas. Ini dipanggil sebagai pemboleh ubah kelas . Pemboleh ubah contoh boleh unik untuk setiap contoh seperti nama, e-mel, sal dan lain-lain yang rumit? Mari kita fahami ini dengan contoh. Rujuk kod di bawah untuk mengetahui kenaikan gaji tahunan.

pekerja kelas: perc_raise = 1.05 def __init __ (diri, pertama, terakhir, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + terakhir + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) def apply_raise (self): self.sal = int (self.sal * 1.05 ) emp_1 = pekerja ('aayushi', 'johari', 350000) emp_2 = pekerja ('ujian', 'ujian', 100000) cetak (emp_1.sal) emp_1.apply_raise () cetak (emp_1.sal)

Pengeluaran-

350000 367500

Seperti yang anda lihat di atas, saya telah mencetak gaji terlebih dahulu dan kemudian menerapkan kenaikan 1.5%. Untuk mengakses pemboleh ubah kelas ini, kita perlu mengaksesnya melalui kelas atau contoh kelas. Sekarang, mari kita fahami pelbagai sifat dalam kelas python.

Atribut dalam Kelas Python

Atribut dalam Python menentukan sifat objek, elemen atau fail. Terdapat dua jenis atribut:

  • Atribut Kelas terbina dalam: Terdapat pelbagai atribut yang terdapat di dalam kelas Python. Contohnya _dict_, _doc_, _name _, dll. Biarkan saya mengambil contoh yang sama di mana saya mahu melihat semua pasangan kunci-nilai pekerja1. Untuk itu, anda boleh menulis pernyataan di bawah yang mengandungi ruang nama kelas:

    cetak (emp_1 .__ dikt__)

    Setelah melaksanakannya, anda akan mendapat output seperti: {‘fname’: ‘aayushi’, ‘lname’: ‘johari’, ‘sal’: 350000, ’email’: ‘aayushi.johari@company.com’}

  • Atribut yang ditentukan oleh Pengguna : Atribut dibuat di dalam definisi kelas. Kami dapat membuat atribut baru secara dinamik untuk contoh kelas yang ada. Atribut boleh terikat dengan nama kelas juga.

Seterusnya, kita ada awam, dilindungi dan peribadi sifat. Mari kita fahami secara terperinci:

Menamakan Jenis Makna
NamaAwamAtribut ini boleh digunakan secara bebas di dalam atau di luar definisi kelas
_namaDilindungiAtribut dilindungi tidak boleh digunakan di luar definisi kelas, kecuali di dalam definisi subkelas
__namaPeribadiAtribut seperti ini tidak dapat diakses dan tidak dapat dilihat. Tidak mungkin membaca atau menulis atribut tersebut, kecuali dalam definisi kelas itu sendiri


Seterusnya, mari kita fahami komponen yang paling penting dalam kelas python iaitu Objek.

Apakah objek dalam Kelas Python?

Seperti yang telah kita bincangkan di atas, sebuah objek dapat digunakan untuk mengakses atribut yang berlainan. Ia digunakan untuk membuat contoh kelas. Contoh adalah objek kelas yang dibuat pada waktu run.

To memberikan gambaran ringkas, objek pada dasarnya adalah semua yang anda lihat di sekitar. Contohnya: Anjing adalah objek kelas haiwan, saya adalah objek kelas manusia. Begitu juga, terdapat pelbagai objek untuk kelas telefon yang sama.Ini serupa dengan fungsi panggilan yang telah kita bincangkan. Mari kita fahami ini dengan contoh:

kelas MyClass: def func (self): print ('Hello') # buat MyClass baru ob = MyClass () ob.func ()

Melangkah maju dengan kelas python, mari kita fahami pelbagai konsep OOP.

Konsep OOP

OOP merujuk kepada Pengaturcaraan Berorientasikan Objek di Python. Nah, Python tidak sepenuhnya berorientasikan objek kerana mengandungi beberapa fungsi prosedur. Sekarang, anda pasti tertanya-tanya apa perbezaan antara pengaturcaraan berorientasikan prosedur dan objek. Untuk menghilangkan keraguan anda, dalam pengaturcaraan prosedur, keseluruhan kod ditulis menjadi satu prosedur yang panjang walaupun mungkin berisi fungsi dan subrutin. Ia tidak dapat dikendalikan kerana kedua-dua data dan logik digabungkan. Tetapi ketika kita berbicara mengenai pengaturcaraan berorientasikan objek, program ini dibahagikan kepada objek mandiri atau beberapa program mini. Setiap objek mewakili bahagian aplikasi yang berbeza yang mempunyai data dan logik tersendiri untuk berkomunikasi sesama mereka. Contohnya, laman web mempunyai objek yang berbeza seperti gambar, video dll.
Pengaturcaraan Berorientasikan Objek merangkumi konsep kelas Python, objek, Warisan, Polimorfisme, Abstraksi dan lain-lain. Mari kita fahami topik-topik ini secara terperinci.

Kelas Python: Warisan

Warisan membolehkan kita mewarisi atribut dan kaedah dari kelas asas / induk. Ini berguna kerana kita dapat membuat sub-kelas dan mendapatkan semua fungsi dari kelas induk kita. Kemudian kita boleh menimpa dan menambah fungsi baru tanpa menjejaskan kelas induk. Mari kita fahami konsep kelas ibu bapa dan kelas anak dengan contoh.

Seperti yang kita lihat dalam gambar, seorang anak mewarisi harta dari ayah. Begitu juga di python, terdapat dua kelas:

1. Kelas ibu bapa (kelas Super atau Base)

2. Kelas kanak-kanak (Subclass atau kelas turunan)

kelas pojo di java dengan contoh

Kelas yang mewarisi harta dikenali sebagai Anak Kelas sedangkan kelas yang sifatnya diwarisi dikenali sebagai Ibu bapa kelas.

Warisan merujuk kepada kemampuan mencipta Sub-kelas yang mengandungi pengkhususan ibu bapa mereka. Ia dibahagikan lagi kepada empat jenis iaitu warisan tunggal, bertingkat, hierarki dan pelbagai. Rujuk gambar di bawah untuk mendapatkan pemahaman yang lebih baik.

Mari teruskan kelas python dan fahami bagaimana warisan berguna.

Katakanlah, saya ingin membuat kelas untuk jenis pekerja. Saya akan menjadikan ‘developer’ dan ‘manager’ sebagai sub-kelas kerana kedua-dua pembangun dan pengurus akan mempunyai nama, e-mel dan gaji dan semua fungsi ini akan ada di kelas pekerja. Jadi, daripada menyalin kod untuk subkelas, kita hanya boleh menggunakan semula kod tersebut dengan mewarisi dari pekerja.

pekerja kelas: num_employee = 0 raise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + terakhir + '@ company.com' karyawan.num_employee + = 1 nama penuh def (diri): kembali '{} {}'. format (self.first, self.last) def apply_raise (diri): self.sal = int ( self.sal * raise_amount) pembangun kelas (pekerja): lulus emp_1 = pemaju ('aayushi', 'johari', 1000000) cetakan (emp_1.email)
 Pengeluaran - aayushi.johari@company.com

Seperti yang anda lihat dalam output di atas, semua butiran kelas pekerja terdapat di kelas pemaju.Sekarang bagaimana jika saya mahu menukar jumlah kenaikan untuk pemaju menjadi 10%? mari kita lihat bagaimana ia dapat dilakukan secara praktikal.

pekerja kelas: num_employee = 0 raise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + terakhir + '@ company.com' karyawan.num_employee + = 1 nama penuh def (diri): kembali '{} {}'. format (self.first, self.last) def apply_raise (diri): self.sal = int ( self.sal * raise_amount) pembangun kelas (pekerja): raise_amount = 1.10 emp_1 = developer ('aayushi', 'johari', 1000000) cetakan (emp_1.raise_amount)
 Pengeluaran - 1.1

Seperti yang anda lihat bahawa ia telah mengemas kini peratusan kenaikan gaji dari 4% menjadi 10%.Sekarang jika saya mahu menambahkan satu lagi atribut, katakan bahasa pengaturcaraan dalam kaedah init kami, tetapi tidak ada dalam kelas induk kami. Adakah penyelesaian untuk itu? Ya! kita boleh menyalin keseluruhan logik pekerja dan melakukannya tetapi ia akan meningkatkan lagi ukuran kodnya. Oleh itu, untuk mengelakkannya, mari kita pertimbangkan kod di bawah:

pekerja kelas: num_employee = 0 raise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + terakhir + '@ company.com' karyawan.num_employee + = 1 nama penuh def (diri): kembali '{} {}'. format (self.first, self.last) def apply_raise (diri): self.sal = int ( self.sal * raise_amount) pembangun kelas (pekerja): raise_amount = 1.10 def __init __ (self, first, last, sal, prog_lang): super () .__ init __ (first, last, sal) self.prog_lang = prog_lang emp_1 = developer ( cetakan 'aayushi', 'johari', 1000000, 'python') (emp_1.prog_lang)

Oleh itu, dengan sedikit kod, saya telah membuat perubahan. Saya telah menggunakan super .__ init __ (pertama, terakhir, bayar) yang mewarisi harta dari kelas asas.Sebagai kesimpulan, pewarisan digunakan untuk menggunakan semula kod dan mengurangkan kerumitan program.

Kelas Python: Polimorfisme

Polimorfisme dalam Sains Komputer adalah keupayaan untuk menampilkan antara muka yang sama untuk bentuk yang berbeza. Secara praktikal, polimorfisme bermaksud bahawa jika kelas B mewarisi dari kelas A, ia tidak perlu mewarisi segala-galanya mengenai kelas A, ia dapat melakukan beberapa perkara yang dilakukan oleh kelas A secara berbeza. Ia paling biasa digunakan ketika berurusan dengan harta pusaka. Python secara implisit bersifat polimorfik, ia mempunyai kemampuan untuk membebani operator standard sehingga mereka mempunyai tingkah laku yang sesuai berdasarkan konteksnya.

Mari kita fahami dengan contoh:

kelas Haiwan: def __init __ (diri, nama): self.name = nama def talk (diri): kelas lulus Anjing (Haiwan): def talk (diri): cetak ('Woof') kelas Cat (Animal): def talk ( diri): cetak ('MEOW!') c = Kucing ('kitty') c.talk () d = Anjing (Haiwan) d.talk ()

Pengeluaran -

Meow! Woof

menghasilkan rentetan rawak dalam java

Seterusnya, mari kita beralih ke konsep pengaturcaraan berorientasikan objek lain iaitu Abstraction.

Kelas Python: Abstraksi

Abstraksi digunakan untuk mempermudah realiti kompleks dengan memodelkan kelas yang sesuai dengan masalah. Di sini, kita mempunyai kelas abstrak yang tidak dapat dibuat. Ini bermaksud anda tidak dapat membuat objek atau contoh untuk kelas ini. Ia hanya boleh digunakan untuk mewarisi fungsi tertentu yang anda panggil sebagai kelas asas. Oleh itu, anda boleh mewarisi fungsi tetapi pada masa yang sama, anda tidak dapat membuat contoh kelas tertentu ini. Mari kita fahami konsep kelas abstrak dengan contoh di bawah:

dari abc import ABC, abstractmethod class Employee (ABC): @ab Abstractmethod def calcul_salary (self, sal): pass class Developer (Employee): def calcul_salary (self, sal): finalsalary = sal * 1.10 return finalsalary emp_1 = Developer () cetak (emp_1.calculate_salary (10000))

Pengeluaran-

11000.0

Seperti yang anda lihat dalam output di atas, kami telah menaikkan gaji pokok menjadi 10% iaitu gaji sekarang adalah 11000. Sekarang, jika anda benar-benar pergi dan membuat objek kelas 'Pekerja', ia akan menimbulkan kesalahan kerana python tidak Tidak membenarkan anda membuat objek kelas abstrak. Tetapi dengan menggunakan harta pusaka, anda sebenarnya boleh mewarisi harta dan melaksanakan tugas masing-masing.

Jadi kawan-kawan, ini semua mengenai kelas dan objek python secara ringkas. Kami telah merangkumi semua asas kelas Python, objek dan pelbagai konsep berorientasikan objek di python, jadi anda boleh mula berlatih sekarang. Saya harap anda menikmati membaca blog ini di 'Python Class' dan jelas mengenai setiap aspek yang telah saya bincangkan di atas. Selepas kelas python, saya akan muncul lebih banyak blog di Python untuk scikit belajar perpustakaan dan susunan. Nantikan!

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog 'Kelas Python' ini dan kami akan menghubungi anda secepat mungkin.

Untuk mendapatkan pengetahuan mendalam tentang Python bersama dengan pelbagai aplikasinya, anda boleh dengan latihan dalam talian langsung kami dengan sokongan 24/7 dan akses seumur hidup.