Berkaitan dengan kedua jenis atribut yang telah aku pelajari, aku menggunakan contoh berikut untuk memperkuat pemahamanky terkait dengan konsep class attribute. Show
#Definisikan Class Karyawan class Karyawan: nama_perusahaan = 'ABC' #Inisiasi object yang dinyatakan dalam variabel aksara dan senja aksara = Karyawan() senja = Karyawan() #Cetak nama perusahaan melalui penggunaan keyword __class__ #pada class attribute nama_perusahaan print(aksara.__class__.nama_perusahaan) # Ubah nama_perusahaan menjadi 'DEF' aksara.__class__.nama_perusahaan = 'DEF' #Cetak nama_perusahaan objek aksara dan senja print(aksara.__class__.nama_perusahaan) print(senja.__class__.nama_perusahaan)Output :ABC DEF DEF Link materi : academy.dqlab.id/main/livecode/161/301/1354. Class dan Objek dalam Python - Part 4Atribut nama, usia dan pendapatan merupakan contoh dari instance variabel. Sebagai tambahan, fungsi init() di dalam class Karyawan secara khusus disebut sebagai constructor. Melalui sebuah constructor, aku dapat meng-assign (menginisialisasi) atribut-atribut milik sebuah objek. Pada bahasa pemrograman Python, setiap fungsi (termasuk constructor) akan menerima dirinya sendiri (self) sebagai parameter pertama dari fungsi. Kemudian, aku dapat menambahkan parameter-parameter lain setelah parameter self sesuai dengan kebutuhan. Seperti pada contoh di atas, saat objek dibuat (diinisialisasi), aku dapat melemparkan nama, usia dan pendapatan melalui syntax,Terakhir, aku belajar bahwa objek aksara dan senja diizinkan untuk memiliki nama, usia dan pendapatan yang berbeda. Untuk mengakses instance attribute dalam sebuah class, aku perlu menuliskan sintaks self diikuti dengan tanda titik (.) sebelum nama atribut. #Definisikan class Karyawan class Karyawan: nama_perusahaan = 'ABC' def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan #Buat object bernama aksara dan senja aksara = Karyawan('Aksara', 25, 8500000) senja = Karyawan('Senja', 28, 12500000) #Cetak objek bernama aksara print(aksara.nama + ', Usia: ' + str(aksara.usia) + ', Pendapatan ' + str(aksara.pendapatan)) #Cetak objek bernama senja print(senja.nama + ', Usia: ' + str(senja.usia) + ', Pendapatan ' + str(senja.pendapatan))Output :Aksara, Usia: 25, Pendapatan 8500000 Senja, Usia: 28, Pendapatan 12500000 Link materi : academy.dqlab.id/main/livecode/161/301/1355 Behavior pada ClassSelain dapat mendefinisikan atribut, dalam sebuah class, aku diperbolehkan untuk mendefinisikan fungsi-fungsi (behavior) dari sebuah class. Dari potongan kode yang telah aku gunakan, aku dapat menambahkan fungsi-fungsi berkaitan dengan class Karyawan. Sebagai contoh, seorang karyawan tentunya mungkin saja memiliki pendapatan tambahan berdasarkan banyaknya kerja lembur dan jumlah proyek yang telah diselesaikan. Untuk menghitung pendapatan tambahan dari jumlah kerja lembur dan jumlah proyek yang diselesaikan oleh seorang karyawan dan mengakses pendapatan total dari seorang karyawan, aku dapat menuliskan potongan kode berikut. #Definisikan class Karyawan berikut dengan attribut dan fungsinya class Karyawan: nama_perusahaan = 'ABC' insentif_lembur = 250000 def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan self.pendapatan_tambahan = 0 def lembur(self): self.pendapatan_tambahan += self.insentif_lembur def tambahan_proyek(self, insentif_proyek): self.pendapatan_tambahan += insentif_proyek def total_pendapatan(self): return self.pendapatan + self.pendapatan_tambahan #Buat object dari karwayan bernama Aksara dan Senja aksara = Karyawan('Aksara', 25, 8500000) senja = Karyawan('Senja', 28, 12500000) #Aksara melaksanakan lembur aksara.lembur() #Senja memiliki proyek tambahan senja.tambahan_proyek(2500000) # Cetak pendapatan total Aksara dan Senja print('Pendapatan Total Aksara: ' + str(aksara.total_pendapatan())) print('Pendapatan Total Senja: ' +str(senja.total_pendapatan()))Output :Pendapatan Total Aksara: 8750000 Pendapatan Total Senja: 15000000 Link materi : academy.dqlab.id/main/livecode/161/301/1358 Tugas Praktek#Definisikan class Karyawan class Karyawan: def __init__(self, nama, usia, pendapatan, insentif_lembur): self.nama = nama self.usia = usia self.pendapatan = pendapatan self.pendapatan_tambahan = 0 self.insentif_lembur = insentif_lembur def lembur(self): self.pendapatan_tambahan += self.insentif_lembur def tambahan_proyek(self, jumlah_tambahan): self.pendapatan_tambahan += jumlah_tambahan def total_pendapatan(self): return self.pendapatan + self.pendapatan_tambahan #Definisikan class Perusahaan class Perusahaan: def __init__(self, nama, alamat, nomor_telepon): self.nama = nama self.alamat = alamat self.nomor_telepon = nomor_telepon self.list_karyawan = [] def aktifkan_karyawan(self, karyawan): self.list_karyawan.append(karyawan) def nonaktifkan_karyawan(self, nama_karyawan): karyawan_nonaktif = None for karyawan in self.list_karyawan: if karyawan.nama == nama_karyawan: karyawan_nonaktif = karyawan break if karyawan_nonaktif is not None: self.list_karyawan.remove(karyawan_nonaktif) Link materi : academy.dqlab.id/main/livecode/161/301/1359 Tugas Praktek#Definisikan perusahaan perusahaan = Perusahaan('ABC', 'Jl. Jendral Sudirman, Blok 11', '(021) 95205XX') #Definisikan nama-nama karyawan karyawan_1 = Karyawan('Ani', 25, 8500000, 100000) karyawan_2 = Karyawan('Budi', 28, 12000000, 150000) karyawan_3 = Karyawan('Cici', 30, 15000000, 200000) #Aktifkan karyawan di perusahaan ABC perusahaan.aktifkan_karyawan(karyawan_1) perusahaan.aktifkan_karyawan(karyawan_2) perusahaan.aktifkan_karyawan(karyawan_3) Link materi : academy.dqlab.id/main/livecode/161/301/1360 Encapsulation pada Python - Part 2Terdapat 2 macam access modifier dalam Python, yakni :
Kemudian, atribut __nama, __usia, __pendapatan_tambahan, __insentif_lembur dan pendapatan bersifat private sehingga atribut ini hanya dapat diakses di dalam scope class Karyawan. Saat aku mencoba mengakses atribut-atribut ini di luar scope class Karyawan, Python akan mengembalikan error yang menyatakan bahwa class Karyawan tidak memiliki atribut tersebut. #Definisikan class Karyawan class Karyawan: nama_perusahaan = 'ABC' __insentif_lembur = 250000 def __init__(self, nama, usia, pendapatan): self.__nama = nama self.__usia = usia self.__pendapatan = pendapatan self.__pendapatan_tambahan = 0 def lembur(self): self.__pendapatan_tambahan += self.__insentif_lembur def tambahan_proyek(self, insentif_proyek): self.__pendapatan_tambahan +=insentif_proyek def total_pendapatan(self): return self.__pendapatan + self.__pendapatan_tambahan #Buat objek karyawan bernama Aksara aksara = Karyawan('Aksara', 25, 8500000) #Akses ke attribute class Karyawan print(aksara.__class__.Karyawan) #Akan menimbulkan error ketika di run print(aksara.nama)Output :AttributeError Traceback (most recent call last) in 17 aksara = Karyawan('Aksara', 25, 8500000) 18 # Akses ke attribute class Karyawan ---> 19 print(aksara.__class__.Karyawan) 20 # Akan menimbulkan error ketika di run 21 print(aksara.nama) AttributeError: type object 'Karyawan' has no attribute 'Karyawan' Link materi : academy.dqlab.id/main/livecode/161/301/1362 Inheritance pada Python – Part 1Inheritance adalah salah satu mekanisme di konsep OO yang mengizinkan aku untuk mendefinisikan sebuah class baru berdasarkan class yang sebelumnya telah dideklarasikan. Melalui konsep inheritance, sebuah class baru dapat memiliki atribut dan fungsi pada class yang sebelumnya telah didefinisikan. Pada konsep inheritance, atribut/fungsi yang akan diwariskan hanyalah atribut/fungsi dengan access modifier public, atribut/fungsi dengan access modifier private tidak akan diturunkan. #Definisikan class Karyawan (sebagai base class) class Karyawan: nama_perusahaan = 'ABC' insentif_lembur = 250000 def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan self.pendapatan_tambahan = 0 def lembur(self): self.pendapatan_tambahan += self.insentif_lembur def tambahan_proyek(self, insentif_proyek): self.pendapatan_tambahan += insentif_proyek def total_pendapatan(self): return self.pendapatan + self.pendapatan_tambahan #Buat class turunan (sebagai inherit class) dari class karyawan, #yaitu class AnalisData class AnalisData(Karyawan): def __init__(self, nama, usia, pendapatan): #melakukan pemanggilan konstruktur class Karyawan super().__init__(nama, usia, pendapatan) #Buat kembali class turunan (sebagai inherit class) dari class karyawan, #yaitu class IlmuwanData class IlmuwanData(Karyawan): def __init__(self, nama, usia, pendapatan): #melakukan pemanggilan konstruktur class Karyawan super().__init__(nama, usia, pendapatan) #Buat objek karyawan yang bekerja sebagai AnalisData aksara = AnalisData('Aksara', 25, 8500000) aksara.lembur() print(aksara.total_pendapatan()) #Buat objek karyawan yang bekerja sebagai IlmuwanData senja = IlmuwanData('Senja', 28, 13000000) senja.tambahan_proyek(2000000) print(senja.total_pendapatan())Output :8750000 15000000 Link materi : academy.dqlab.id/main/livecode/161/301/1365 Inheritance pada Python – Part 2child class mewarisi fungsi/atribut dari parent class dengan menggunakan fungsi super(). Melalui konsep inheritance, child class dapat memodifikasi atribut/ fungsi yang diwarisi oleh sebuah parent class dengan mendefinisikan ulang atribut/ fungsi menggunakan nama yang sama. #Definisikan class Karyawan (sebagai base class) class Karyawan: nama_perusahaan = 'ABC' insentif_lembur = 250000 def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan self.pendapatan_tambahan = 0 def lembur(self): self.pendapatan_tambahan += self.insentif_lembur def tambahan_proyek(self, insentif_proyek): self.pendapatan_tambahan += insentif_proyek def total_pendapatan(self): return self.pendapatan + self.pendapatan_tambahan #Buat class turunan (sebagai inherit class) dari class karyawan, #yaitu class AnalisData class AnalisData(Karyawan): def __init__(self, nama, usia, pendapatan): #melakukan pemanggilan konstruktur class Karyawan super().__init__(nama, usia, pendapatan) #Buat kembali class turunan (sebagai inherit class) dari class karyawan, #yaitu class IlmuwanData class IlmuwanData(Karyawan): # mengubah atribut insentif_lembur yang digunakan pada fungsi lembur() insentif_lembur = 500000 def __init__(self, nama, usia, pendapatan): super().__init__(nama, usia, pendapatan) #Buat objek karyawan yang bekerja sebagai AnalisData aksara = AnalisData('Aksara', 25, 8500000) aksara.lembur() print(aksara.total_pendapatan()) #Buat objek karyawan yang bekerja sebagai IlmuwanData senja = IlmuwanData('Senja', 28, 13000000) senja.lembur() print(senja.total_pendapatan())Output :8750000 13500000 Link materi : academy.dqlab.id/main/livecode/161/301/1370 Polymorphism pada Python - Part 1Selain dapat mendefinisikan ulang nilai dari atribut yang diwarisi oleh parent class seperti pada contoh di atas, juga dapat mendefinisikan ulang fungsi yang telah diwarisi oleh parent class. Saat mendefinisikan kembali fungsi yang telah diwarisi oleh parent class, secara tidak langsung aku telah menerapkan salah satu mekanisme yang secara khusus pada paradigma OO disebut dengan istilah polymorphism. Melakukan pemanggilan konstruktur class Karyawan, menerapkan polymorphism dengan mendefinisikan kembali fungsi lembur() pada AnalisData, dan menambahkan 10% atau 0,1 tambahan pendapatan pada class AnalisData. Fungsi lembur() pada objek aksara sebagai bagian dari class AnalisData akan menambahkan total_pendapatan milik objek sebesar 850000 (10% dari pendapatannya) mengikuti definisi dari fungsi lembur() pada class AnalisData akan menghasilkan output: 9350000. #Definisikan class Karyawan (sebagai base class) class Karyawan: nama_perusahaan = 'ABC' insentif_lembur = 250000 def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan self.pendapatan_tambahan = 0 def lembur(self): self.pendapatan_tambahan += self.insentif_lembur def tambahan_proyek(self, insentif_proyek): self.pendapatan_tambahan += insentif_proyek def total_pendapatan(self): return self.pendapatan + self.pendapatan_tambahan #Buat class turunan (sebagai inherit class) dari class karyawan, #yaitu class AnalisData class AnalisData(Karyawan): def __init__(self, nama, usia, pendapatan): #melakukan pemanggilan konstruktur class Karyawan super().__init__(nama, usia, pendapatan) #menerapkan polymorphism dengan mendefinisikan kembali fungsi #lembur() pada class AnalisData def lembur(self): #pendapatan tambahan pada class AnalisData sebesar #10 % dari pendapatannya. self.pendapatan_tambahan += int(self.pendapatan * 0.1) #Buat objek karyawan yang bekerja sebagai AnalisData aksara = AnalisData('Aksara', 25, 8500000) aksara.lembur() print(aksara.total_pendapatan())Output :9350000 Link materi : academy.dqlab.id/main/livecode/161/304/1373. Polymorphism pada Python - Part 2Pada konsep inheritance, melalui fungsi super(), selain dapat mengakses constructor milik parent class, child class juga dapat mengakses atribut/fungsi yang dimiliki oleh parent class akan menghasilkan output: 9175000 #Definisikan class Karyawan (sebagai base class) class Karyawan: nama_perusahaan = 'ABC' insentif_lembur = 250000 def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan self.pendapatan_tambahan = 0 def lembur(self): self.pendapatan_tambahan += self.insentif_lembur def tambahan_proyek(self, insentif_proyek): self.pendapatan_tambahan += insentif_proyek def total_pendapatan(self): return self.pendapatan + self.pendapatan_tambahan #Buat class turunan (sebagai inherit class) dari class karyawan, #yaitu class AnalisData class AnalisData(Karyawan): def __init__(self, nama, usia, pendapatan): super().__init__ (nama, usia, pendapatan) #mendefinisikan kembali fungsi lembur() pada class AnalisData def lembur(self): #memanggil fungsi lembur pada class Karyawan super().lembur() #pendapatan tambahan pada class AnalisData sebesar #5 % dari pendapatannya. self.pendapatan_tambahan += int(self.pendapatan * 0.05) #Buat objek karyawan yang bekerja sebagai AnalisData aksara = AnalisData('Aksara', 25, 8500000) aksara.lembur() print(aksara.total_pendapatan()) Link materi : academy.dqlab.id/main/livecode/161/304/1374 Tugas Praktek#Definisikan class Karyawan class Karyawan: nama_perusahaan = 'ABC' def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan #Buat object bernama aksara dan senja aksara = Karyawan('Aksara', 25, 8500000) senja = Karyawan('Senja', 28, 12500000) #Cetak objek bernama aksara print(aksara.nama + ', Usia: ' + str(aksara.usia) + ', Pendapatan ' + str(aksara.pendapatan)) #Cetak objek bernama senja print(senja.nama + ', Usia: ' + str(senja.usia) + ', Pendapatan ' + str(senja.pendapatan))0 Link materi : academy.dqlab.id/main/livecode/161/304/1375 Tugas Praktek#Definisikan class Karyawan class Karyawan: nama_perusahaan = 'ABC' def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan #Buat object bernama aksara dan senja aksara = Karyawan('Aksara', 25, 8500000) senja = Karyawan('Senja', 28, 12500000) #Cetak objek bernama aksara print(aksara.nama + ', Usia: ' + str(aksara.usia) + ', Pendapatan ' + str(aksara.pendapatan)) #Cetak objek bernama senja print(senja.nama + ', Usia: ' + str(senja.usia) + ', Pendapatan ' + str(senja.pendapatan))1 Link materi : academy.dqlab.id/main/livecode/161/304/1376. Tugas PraktekNamaUsiaPendapatanBudi??Didi25?Hadi?8000000Aku di minta untuk mengisi tabel, dengan detail berikut: #Definisikan class Karyawan class Karyawan: nama_perusahaan = 'ABC' def __init__(self, nama, usia, pendapatan): self.nama = nama self.usia = usia self.pendapatan = pendapatan #Buat object bernama aksara dan senja aksara = Karyawan('Aksara', 25, 8500000) senja = Karyawan('Senja', 28, 12500000) #Cetak objek bernama aksara print(aksara.nama + ', Usia: ' + str(aksara.usia) + ', Pendapatan ' + str(aksara.pendapatan)) #Cetak objek bernama senja print(senja.nama + ', Usia: ' + str(senja.usia) + ', Pendapatan ' + str(senja.pendapatan))2Output :Budi 21 5000000 Didi 25 5000000 Hadi 21 8000000 Link materi : academy.dqlab.id/main/livecode/161/304/1378 Studi Kasus dari SenjaDi perusahaan ini, seorang analis data yang masuk umumnya berusia 21, memiliki pendapatan senilai 6.500.000 dan insentif lembur senilai 100.000. Kemudian, untuk seorang ilmuwan data yang masuk umumnya berusia 25, memiliki pendapatan senilai 12.000.000, dan insentif lembur senilai 150.000. Di sisi lain, untuk tenaga lepas, hanya terdapat pendapatan umum senilai 4000000 untuk pembersih data dan 2500000 untuk dokumenter teknis. NamaUsiaPekerjaanPendapatanAni25Pembersih Data-Budi18Dokumenter Teknis-Cici-Ilmuwan Data-Didi32Ilmuwan Data20000000Efi-Analis Data-Febi28Analis Data12000000Note: saat usia/pendapatan kosong maka usia/pendapatan mengikuti standar perusahaan. “Dengan kasus ini, berarti di akhir aku harus mencetak total pengeluaran perusahaan untuk menguji kelancaranku dalam menerapkan OOP dengan Python nih,” gumamku sambil berkutat pada baris-baris code di code editor. Bagaimana cara menggunakan Python?Menjalankan Python. Buka terminal CTRL + ALT + T.. Ketik python maka Anda akan masuk ke Python shell.. Tuliskan script Python Anda, contoh: print("Selamat datang di Python") . jika sudah tekan tombol ENTER , dan script Python akan dijalankan/eksekusi.. Untuk keluar dari Python shell ketik exit(). Apakah Python bisa membuat website?Python dapat digunakan untuk membangun aplikasi web sisi server. Sementara kerangka web tidak diperlukan untuk membangun aplikasi web, jarang sekali pengembang tidak akan menggunakan pustaka sumber terbuka yang ada untuk mempercepat kemajuan mereka dalam membuat aplikasi mereka berfungsi.
Bagaimana program Python dieksekusi?Python adalah salah satu bahasa pemrograman yang dieksekusinya menggunakan interpreter. Setiap bahasa pemrograman high level (yang mudah dibaca oleh manusia) akan diubah terlebih dahulu menjadi bahasa mesin (low level). Cara merubah high level language dibagi menjadi dua yaitu dengan compiler atau interpreter.
Bagaimana Anda memasukkan komentar dalam kode Python?Untuk menggunakan komentar anda cukup menulis tanda pagar # , diikuti dengan komentar Anda. Saat anda menjalankan script diatas, Anda akan melihat output berupa Hello World , Budi dan 123 , karena tulisan/komentar yang ditulis tidak dieksekusi.
|