Kelas dan Objek Python - Pemrograman Berorientasi Objek



Blog tentang 'Kelas Python' ini membahas dasar-dasar kelas, atribut, dan berbagai konsep OOPS seperti pewarisan, polimorfisme, dan enkapsulasi.

Setelah Stack Overflow memperkirakan bahwa pada 2019, Python akan melampaui bahasa lain dalam hal pengembang aktif, permintaan untuk hanya tumbuh.Python mengikuti paradigma pemrograman berorientasi objek. Ini berkaitan dengan mendeklarasikan kelas python, membuat objek darinya dan berinteraksi dengan pengguna. Dalam bahasa berorientasi objek, program dipecah menjadi objek-objek mandiri atau bisa dikatakan menjadi beberapa program mini. Setiap objek mewakili bagian aplikasi yang berbeda yang dapat berkomunikasi di antara mereka sendiri.
Di blog kelas python ini, Anda akan memahami setiap aspek kelas dan objek dalam urutan berikut:

Mari kita mulai. :-)





Apa itu Kelas Python?

Kelas dengan python adalah cetak biru dari mana objek tertentu dibuat. Ini memungkinkan Anda menyusun perangkat lunak Anda dengan cara tertentu. Ini dia pertanyaan bagaimana? Kelas memungkinkan kita untuk secara logis mengelompokkan data dan fungsi kita dengan cara yang mudah digunakan kembali dan cara untuk mengembangkannya jika perlu. Perhatikan gambar di bawah ini.

tanggal tipe data dalam contoh sql

ClassesAndObjects - Kelas Python - EdurekaPada gambar pertama (A), ini mewakili cetak biru rumah yang dapat dianggap sebagai Kelas . Dengan cetak biru yang sama, kita dapat membuat beberapa rumah dan ini dapat dianggap sebagai Objek . Dengan menggunakan kelas, Anda dapat menambahkan konsistensi pada program Anda sehingga dapat digunakan dengan cara yang lebih bersih dan efisien. Atribut tersebut adalah anggota data (variabel kelas dan variabel instan) dan metode yang diakses melalui notasi titik.



  • Variabel kelas adalah variabel yang digunakan bersama oleh semua objek / instance kelas yang berbeda.
  • Variabel instance adalah variabel yang unik untuk setiap instance. Ini didefinisikan di dalam metode dan hanya milik instance kelas saat ini.
  • Metode juga disebut sebagai fungsi yang didefinisikan dalam kelas dan menggambarkan perilaku suatu objek.

Sekarang, mari kita lanjutkan dan lihat cara kerjanya di PyCharm. Untuk memulai, pertama-tama lihat sintaks kelas python.

Sintaksis :

class Class_name: pernyataan-1. . pernyataan-N

Di sini, ' kelas' pernyataan menciptakan definisi kelas baru. Nama kelas segera mengikuti kata kunci “ kelas' dengan python yang diikuti oleh titik dua. Untuk membuat kelas dengan python, perhatikan contoh di bawah ini:



karyawan kelas: lulus #tidak ada atribut dan metode emp_1 = karyawan () emp_2 = karyawan () # Variabel instans dapat 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 = 10000 print (emp_1.email) print (emp_2.email)

Keluaran -

aayushi@edureka.co test@company.com

Sekarang, bagaimana jika kita tidak ingin menyetel variabel ini secara manual. Anda akan melihat banyak kode dan juga rawan kesalahan. Jadi untuk membuatnya otomatis, kita bisa menggunakan metode “init”. Untuk itu, mari kita pahami apa sebenarnya metode dan atribut di kelas python.

Metode dan Atribut dalam Kelas Python

Sekarang membuat kelas tidak lengkap tanpa beberapa fungsionalitas. Jadi fungsionalitas dapat didefinisikan dengan mengatur berbagai atribut yang berfungsi sebagai wadah untuk data dan fungsi yang terkait dengan atribut tersebut. Fungsi dalam python juga disebut sebagai Metode . Berbicara tentang init metode , ini adalah fungsi khusus yang dipanggil setiap kali objek baru dari kelas itu dibuat. Anda dapat menganggapnya sebagai metode inisialisasi atau Anda dapat menganggapnya sebagai konstruktor jika Anda berasal dari latar belakang pemrograman berorientasi objek lain seperti C ++, Java, dll. Sekarang ketika kita menyetel metode di dalam kelas, mereka menerima instance secara otomatis. Mari kita lanjutkan dengan kelas python dan terima nama depan, nama belakang dan gaji menggunakan metode ini.

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

Sekarang dalam metode 'init' kami, kami telah menetapkan variabel instan ini (self, first, last, sal). Self adalah instance yang berarti setiap kita menulis self.fname = first, sama dengan emp_1.first = ’aayushi’. Kemudian kami telah membuat contoh kelas karyawan di mana kami dapat meneruskan nilai yang ditentukan dalam metode init. Metode ini mengambil contoh sebagai argumen. Alih-alih melakukannya secara manual, itu akan dilakukan secara otomatis sekarang.

Selanjutnya, kami menginginkan kemampuan untuk melakukan beberapa jenis tindakan. Untuk itu, kami akan menambahkan file metode ke kelas ini. Misalkan saya ingin fungsionalitas menampilkan nama lengkap karyawan. Jadi mari kita terapkan ini secara praktis.

karyawan 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 = employee ('aayushi', 'johari', 350000) emp_2 = employee ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Keluaran-

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

Seperti yang Anda lihat di atas, saya telah membuat metode yang disebut 'nama lengkap' di dalam kelas. Jadi setiap metode di dalam kelas python secara otomatis mengambil contoh sebagai argumen pertama. Sekarang dalam metode ini, saya telah menulis logika untuk mencetak nama lengkap dan mengembalikan ini, bukan emp_1 nama depan dan nama belakang. Selanjutnya, saya telah menggunakan 'diri' sehingga itu akan bekerja dengan semua contoh. Oleh karena itu untuk mencetak ini setiap saat, kami menggunakan file metode .

Bergerak maju dengan kelas Python, ada variabel yang dibagikan di antara semua instance kelas. Ini disebut sebagai variabel kelas . Variabel instance bisa unik untuk setiap instance seperti nama, email, sal, dll. Rumit? Mari kita pahami ini dengan sebuah contoh. Lihat kode di bawah ini untuk mengetahui kenaikan gaji tahunan.

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

Keluaran-

350000 367500

Seperti yang Anda lihat di atas, saya telah mencetak gaji terlebih dahulu dan kemudian menerapkan kenaikan 1,5%. Untuk mengakses variabel kelas ini, kita perlu mengaksesnya melalui kelas atau instance kelas. Sekarang, mari kita pahami berbagai atribut di kelas python.

Atribut dalam Kelas Python

Atribut dalam Python mendefinisikan properti dari sebuah objek, elemen atau file. Ada dua jenis atribut:

  • Atribut Kelas Bawaan: Ada berbagai atribut bawaan yang ada di dalam kelas Python. Misalnya _dict_, _doc_, _name _, dll. Mari saya ambil contoh yang sama di mana saya ingin melihat semua key-value pair dari employee1. Untuk itu, Anda cukup menulis pernyataan di bawah ini yang berisi namespace kelas:

    cetak (emp_1 .__ dict__)

    Setelah menjalankannya, Anda akan mendapatkan output seperti: {‘fname’: ‘aayushi’, ‘lname’: ‘johari’, ‘sal’: 350000, ’email’: ‘aayushi.johari@company.com’}

  • Atribut yang ditentukan oleh Pengguna : Atribut dibuat di dalam definisi kelas. Kita dapat secara dinamis membuat atribut baru untuk instance kelas yang sudah ada. Atribut juga dapat diikat ke nama kelas.

Selanjutnya, kami punya publik, dilindungi dan pribadi atribut. Mari kita pahami secara detail:

Penamaan Tipe Berarti
NamaPublikAtribut ini dapat digunakan secara bebas di dalam atau di luar definisi kelas
_namaTerlindungAtribut yang dilindungi tidak boleh digunakan di luar definisi kelas, kecuali di dalam definisi subkelas
__namaPribadiJenis atribut ini tidak dapat diakses dan tidak terlihat. Atribut tersebut tidak dapat dibaca atau ditulis, kecuali di dalam definisi kelas itu sendiri


Selanjutnya, mari kita pahami komponen terpenting dalam kelas python, yaitu Objek.

Apa objek di Kelas Python?

Seperti yang telah kita bahas di atas, sebuah objek dapat digunakan untuk mengakses atribut yang berbeda. Ini digunakan untuk membuat instance kelas. Sebuah instance adalah objek dari kelas yang dibuat pada saat run-time.

To memberi Anda gambaran umum singkat, objek pada dasarnya adalah segala sesuatu yang Anda lihat di sekitar. Misalnya: Seekor anjing adalah objek dari kelas hewan, saya adalah objek dari kelas manusia. Demikian pula, mungkin ada objek berbeda untuk kelas ponsel yang sama.Ini sangat mirip dengan pemanggilan fungsi yang telah kita bahas. Mari kita pahami ini dengan contoh:

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

c ++ urutan fibonacci

Melanjutkan kelas python, mari kita pahami berbagai konsep OOP.

Konsep OOP

OOP mengacu pada Pemrograman Berorientasi Objek dengan Python. Nah, Python tidak sepenuhnya berorientasi objek karena mengandung beberapa fungsi prosedural. Sekarang, Anda pasti bertanya-tanya apa perbedaan antara pemrograman prosedural dan berorientasi objek. Untuk menghilangkan keraguan Anda, dalam pemrograman prosedural, seluruh kode ditulis ke dalam satu prosedur yang panjang meskipun mungkin berisi fungsi dan subrutin. Ini tidak dapat dikelola karena data dan logika bercampur. Tetapi ketika kita berbicara tentang pemrograman berorientasi objek, program ini dibagi menjadi objek mandiri atau beberapa program mini. Setiap objek mewakili bagian aplikasi yang berbeda yang memiliki data dan logikanya sendiri untuk berkomunikasi di antara mereka sendiri. Misalnya, situs web memiliki objek yang berbeda seperti gambar, video, dll.
Pemrograman Berorientasi Objek mencakup konsep kelas Python, objek, Warisan, Polimorfisme, Abstraksi, dll. Mari kita pahami topik ini secara detail.

Kelas Python: Warisan

Warisan memungkinkan kita untuk mewarisi atribut dan metode dari kelas dasar / induk. Ini berguna karena kita dapat membuat sub-kelas dan mendapatkan semua fungsionalitas dari kelas induk kita. Kemudian kita dapat menimpa dan menambahkan fungsionalitas baru tanpa memengaruhi kelas induk. Mari kita pahami konsep kelas induk dan kelas anak dengan sebuah contoh.

Seperti yang bisa kita lihat pada gambar, seorang anak mewarisi properti dari ayahnya. Demikian pula, di python, ada dua kelas:

1. Kelas orang tua (kelas Super atau Base)

2. Kelas anak (Subclass atau Derived class)

Kelas yang mewarisi properti disebut Anak Kelas sedangkan kelas yang propertinya diwarisi disebut Induk kelas.

Pewarisan mengacu pada kemampuan untuk menciptakan Sub-kelas yang berisi spesialisasi orang tuanya. Ini selanjutnya dibagi menjadi empat jenis yaitu warisan tunggal, bertingkat, hierarkis dan banyak. Lihat gambar di bawah ini untuk mendapatkan pemahaman yang lebih baik.

Mari kita lanjutkan dengan kelas python dan pahami bagaimana warisan berguna.

Katakanlah, saya ingin membuat kelas untuk jenis karyawan. Saya akan membuat 'pengembang' dan 'manajer' sebagai sub-kelas karena pengembang dan manajer akan memiliki nama, email, dan gaji dan semua fungsi ini akan ada di kelas karyawan. Jadi, alih-alih menyalin kode untuk subkelas, kita cukup menggunakan kembali kode dengan mewarisi dari karyawan.

kelas karyawan: jumlah_pekerjaan = 0 kenaikan_jumlah = 1,04 def __init __ (diri, pertama, terakhir, sal): diri.pertama = diri pertama. terakhir = diri terakhir.sal = sal self.email = pertama + '.' + terakhir + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) pengembang kelas (karyawan): lulus emp_1 = pengembang ('aayushi', 'johari', 1000000) print (emp_1.email)
 Keluaran - aayushi.johari@company.com

Seperti yang Anda lihat pada keluaran di atas, semua detail kelas karyawan tersedia di kelas pengembang.Sekarang bagaimana jika saya ingin mengubah raise_amount untuk pengembang menjadi 10%? mari kita lihat bagaimana hal itu dapat dilakukan secara praktis.

kelas karyawan: jumlah_pekerjaan = 0 kenaikan_jumlah = 1,04 def __init __ (diri, pertama, terakhir, sal): diri.pertama = diri pertama. terakhir = diri terakhir.sal = sal self.email = pertama + '.' + terakhir + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) pengembang kelas (karyawan): raise_amount = 1,10 emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Keluaran - 1.1

Seperti yang Anda lihat, itu telah memperbarui persentase kenaikan gaji dari 4% menjadi 10%.Sekarang jika saya ingin menambahkan satu atribut lagi, katakanlah bahasa pemrograman dalam metode init kita, tetapi itu tidak ada di kelas induk kita. Apakah ada solusi untuk itu? Iya! kita dapat menyalin seluruh logika karyawan dan melakukan itu tetapi itu akan meningkatkan ukuran kode lagi. Jadi untuk menghindarinya, mari perhatikan kode di bawah ini:

kelas karyawan: jumlah_pekerjaan = 0 kenaikan_jumlah = 1,04 def __init __ (diri, pertama, terakhir, sal): diri.pertama = diri pertama. terakhir = diri terakhir.sal = sal self.email = pertama + '.' + terakhir + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) class developer (karyawan): 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 ( 'aayushi', 'johari', 1000000, 'python') print (emp_1.prog_lang)

Oleh karena itu, hanya dengan sedikit kode, saya telah membuat perubahan. Saya telah menggunakan super .__ init __ (pertama, terakhir, bayar) yang mewarisi properti dari kelas dasar.Sebagai kesimpulan, pewarisan digunakan untuk menggunakan kembali kode dan mengurangi kompleksitas program.

Kelas Python: Polimorfisme

Polimorfisme dalam Ilmu Komputer adalah kemampuan untuk menyajikan antarmuka yang sama untuk berbagai bentuk dasar. Dalam istilah praktis, polimorfisme berarti bahwa jika kelas B mewarisi dari kelas A, ia tidak harus mewarisi semua hal tentang kelas A, ia dapat melakukan beberapa hal yang dilakukan kelas A secara berbeda. Ini paling sering digunakan saat berurusan dengan warisan. Python secara implisit polimorfik, ia memiliki kemampuan untuk membebani operator standar sehingga mereka memiliki perilaku yang sesuai berdasarkan konteksnya.

Mari kita pahami dengan contoh:

class Animal: def __init __ (self, name): self.name = name def talk (self): pass class Dog (Animal): def talk (self): print ('Woof') class Cat (Animal): def talk ( self): print ('MEOW!') c = Cat ('kitty') c.talk () d = Dog (Animal) d.talk ()

Keluaran -

Meong! Pakan

Selanjutnya, mari kita beralih ke konsep pemrograman berorientasi objek lainnya yaitu Abstraksi.

Kelas Python: Abstraksi

Abstraksi digunakan untuk menyederhanakan realitas kompleks dengan memodelkan kelas yang sesuai dengan masalahnya. Di sini, kami memiliki kelas abstrak yang tidak dapat dipakai. Ini berarti Anda tidak dapat membuat objek atau contoh untuk kelas-kelas ini. Itu hanya dapat digunakan untuk mewarisi fungsi tertentu yang Anda sebut sebagai kelas dasar. Jadi, Anda dapat mewarisi fungsionalitas tetapi pada saat yang sama, Anda tidak dapat membuat instance dari kelas khusus ini. Mari kita pahami konsep kelas abstrak dengan contoh di bawah ini:

dari abc import ABC, abstractmethod class Employee (ABC): @abstractmethod def count_salary (self, sal): pass class Developer (Karyawan): def calc_salary (self, sal): finalsalary = sal * 1.10 return finalsalary emp_1 = Developer () print (emp_1.calculate_salary (10000))

Keluaran-

cara membuat peringatan di html
11000.0

Seperti yang Anda lihat pada output di atas, kami telah meningkatkan gaji pokok menjadi 10% yaitu gajinya sekarang 11000. Sekarang, jika Anda benar-benar melanjutkan dan membuat objek dari kelas 'Karyawan', Anda akan mendapat kesalahan seperti python tidak tidak memungkinkan Anda untuk membuat objek kelas abstrak. Tetapi menggunakan pewarisan, Anda sebenarnya dapat mewarisi properti dan melakukan tugas masing-masing.

Jadi guys, ini semua tentang kelas dan objek python secara singkat. Kami telah membahas semua dasar-dasar kelas Python, objek, dan berbagai konsep berorientasi objek dengan python, jadi Anda dapat mulai berlatih sekarang. Saya harap kalian menikmati membaca blog ini di 'Kelas Python' dan jelas tentang setiap aspek yang telah saya bahas di atas. Setelah kelas python, saya akan datang dengan lebih banyak blog tentang Python untuk scikit belajar perpustakaan dan array. Tetap disini!

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'Kelas Python' ini dan kami akan menghubungi Anda kembali secepatnya.

Untuk mendapatkan pengetahuan mendalam tentang Python beserta berbagai aplikasinya, Anda bisa dengan pelatihan online langsung kami dengan dukungan 24/7 dan akses seumur hidup.