Anda di halaman 1dari 14

Modul Python for Data Professional Beginner - Part 3

April 10, 2023

0.0.1 Konsep dalam Object Oriented Programming


Sebagai salah satu bahasa pemrograman yang bersifat multi-purposive, Python juga mendukung
paradigma Object Oriented (OO).
Konsep OO pada Python memiliki tujuan untuk menciptakan potongan-potongan kode yang bersi-
fat reusable dan tidak redundan. Konsep ini dikenal dengan istilah konsep DRY - Don’t Repeat
Yourself (berlawanan dengan konsep WET - Write Everything Twice).
Dalam bahasa pemrograman Python, terdapat 3 konsep utama OO yaitu.
• Encapsulation: Menyembunyikan sebagian detail yang dimiliki oleh sebuah objek terhadap
objek-objek lainnya.
• Inheritance: Menurunkan serangkaian fungsi-fungsi yang dimiliki oleh sebuah objek ke sebuah
objek baru tanpa mengubah makna dari objek acuan yang digunakan.
• Polymorphism: Konsep untuk menggunakan fungsi-fungsi dengan nama/tujuan yang sama
dengan cara yang berbeda.

Class dan Objek dalam Python - Part 1 Setiap objek yang aku representasikan dalam
program berbasis OOP merupakan instansi/ bentuk nyata dari sebuah konsep yang disebut dengan
class. Oleh karena itu, class dapat juga aku sebutkan sebagai kerangka utama (blueprint) dari objek

Class dan Objek dalam Python - Part 2


• Class Attribute adalah properti/atribut yang bernilai sama untuk oleh seluruh objek
• Instance Attribute adalah properti/atribut yang nilainya berbeda-beda untuk setiap objek
dari sebuah class.

Class dan Objek dalam Python - Part 3 Berkaitan dengan kedua jenis atribut yang telah
aku pelajari, aku menggunakan contoh berikut untuk memperkuat pemahamanku terkait dengan
konsep class attribute.
Class Karyawan pada umumnya memiliki beberapa atribut seperti nama, usia, pendapatan serta
nama perusahaan di mana karyawan tersebut bekerja. Untuk merepresentasikan diriku dan Senja
sebagai karyawan yang bekerja di sebuah perusahaan yang sama (anggap saja perusahan ABC),
aku dapat merepresentasikan dengan menggunakan konsep class attribute

[ ]: # Definisikan class Karyawan


class Karyawan:
nama_perusahaan = 'ABC'
# Inisiasi object yang dinyatakan dalam variabel aksara dan senja

1
aksara = Karyawan()
senja = Karyawan()

Menggunakan potongan kode di atas, nama_perusahaan sebagai class attribute dapat kita akses
dengan menggunakan syntax:

[ ]: # Cetak nama perusahaan melalui penggunaan keyword __class__


# pada class attribute nama_perusahaan
print(aksara.__class__.nama_perusahaan)

DEF
Kemudian, sesuai dengan konsep yang telah aku pelajari sebelumnya, saat aku mengubah nilai
atribut yang merupakan sebuah class attribute, nilai dari atribut akan berubah untuk seluruh
objek.
Saat perusahaan berubah nama, misalkan nama perusahaan berubah dari ‘ABC’ ke ‘DEF’, dikare-
nakan atribut nama_perusahaan merupakan sebuah class attribute, aku hanya cukup mengganti
nama_perusahaan pada salah satu objek saja (tidak perlu mengganti nama_perusahaan milik
seluruh objek). Contohnya:

[ ]: # 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)

DEF
DEF
Tugas: * Aku di minta untuk mengerjakan tutorial sederhana untuk membantu memahami konsep
OOP:
1. Definisikan Class Karyawan
2. Inisiasi object yang dinyatakan dalam variabel Aksara dan Senja
3. Cetak Nama Perusahaan melalui penggunaan keyword class
4. Ubah Nama Perusahaan menjadi ‘DEF’

[ ]: # 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)

2
print(senja.__class__.nama_perusahaan)

ABC
DEF
DEF

Class dan Objek dalam Python - Part 4


[ ]: # 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))

Aksara, Usia: 25, Pendapatan 8500000


Senja, Usia: 28, Pendapatan 12500000

Behavior pada Class


[ ]: # 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

3
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()))

Pendapatan Total Aksara: 8750000


Pendapatan Total Senja: 15000000

0.0.2 Tugas Praktek


Membuat sistem manajemen perusahaan sederhana menggunakan Object Oriented (OO)
informasi * nama, alamat, nomor telepon, daftar karyawan yang bekerja * fungsi menonaktifkan
dan mengaktifkan karyawan
informasi karyawan * nama, usia, pendapatan tetap, tambahan, dan insentif lembur Informasi
Perusahaan * Nama, Alamat, Nomor Telepon

[ ]: 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

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:

4
self.list_karyawan.remove(karyawan_nonaktif)

# Definisikan perusahaan
perusahaan = Perusahaan('ABC', 'Jl. Jendral Sudirman, Blok11', '(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)

Encapsulation pada Python - Part 1 Enkapsulasi (Encapsulation) adalah sebuah teknik


dalam OOP yang mengizinkan aku untuk menyembunyikan detil dari sebuah atribut dalam sebuah
class. Pada contoh-contoh sebelumnya, setiap atribut dan fungsi yang telah aku definisikan belum
menggunakan konsep enkapsulasi, yang mengartikan bahwa setiap atribut dan fungsi dapat diakses
di luar class.

Encapsulation pada Python – Part 2 Agar suatu properti ataupun fungsi dari sebuah class
tidak dapat diakses secara bebas di luar scope milik suatu class, aku dapat mendefinisikan access
modifier (level akses) saat sebuah atribut/fungsi didefinisikan.
Terdapat 2 macam access modifier dalam Python, yakni.
Public access: dapat aku definisikan dengan secara langsung menuliskan nama dari atribut/ fungsi.
Dalam sebuah objek, atribut/fungsi yang bersifat public access dapat diakses di luar scope sebuah
class Private access: dapat aku definisikan dengan menambahkan double underscore (__) sebelum
menuliskan nama dari atribut/fungsi. Dalam sebuah objek, atribut/fungsi yang bersifat private
access hanya dapat diakses di dalam scope sebuah class.

[ ]: # 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)

5
Pada potongan kode di atas, atribut nama_perusahaan bersifat public yang mengartikan bahwa
aku dapat mengakses atribut ini di luar 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.
Sebagai contoh,

[ ]: # Akses ke attribute class Karyawan


print(aksara.__class__.nama_perusahaan)

ABC
tidak akan menyebabkan error dan menghasilkan output: ABC dan namun akan menyebabkan
error yang menyatakan bahwa Karyawan tidak memiliki attribut ____nama__

[ ]: # Akan menimbulkan error ketika di run


print(aksara.__nama)

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[15], line 2
1 # Akan menimbulkan error ketika di run
----> 2 print(aksara.__nama)

AttributeError: 'Karyawan' object has no attribute '__nama'

Inheritance pada Python – Part 1 Inheritance 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 pri-
vate 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

6
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())

8750000
15000000

Inheritance pada Python – Part 2 Pada bagian pertama aku telah mempelajari bagaimana
child 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

7
[ ]: # 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)

Fungsi lembur pada objek aksara sebagai bagian dari class AnalisData akan menambahkan
total_pendapatan milik objek sebesar 250000 mengikuti insentif ____lembur__ milik class
Karyawan

[ ]: # Buat objek karyawan yang bekerja sebagai AnalisData


aksara = AnalisData('Aksara', 25, 8500000)
aksara.lembur()
print('Pendapatan Aksara adalah', 'Rp',aksara.total_pendapatan())

Pendapatan Aksara adalah Rp 8750000


Selanjutnya,
fungsi lembur pada objek senja sebagai bagian dari class IlmuwanData akan menambahkan to-
tal_pendapatan milik objek sebesar 500000 dikarenakan class IlmuwanData telah mendefinisikan
kembali nilai insentif lembur menjadi 500000

[ ]: # Buat objek karyawan yang bekerja sebagai IlmuwanData


senja = IlmuwanData('Senja', 28, 13000000)
senja.lembur()
print('Pendapatan Senja adalah','Rp',senja.total_pendapatan())

Pendapatan Senja adalah Rp 13500000


QUIZ

[ ]: class Mamalia:
def __init__(self, nama):
self.__nama = nama
def interaksi(self):
print('Bersuara')

class Anjing(Mamalia):
def interaksi(self):
print('Guk')

8
class Manusia(Mamalia):
pass

blacky = Anjing('Blacky')
toni = Manusia('Toni')
toni.interaksi()
blacky.interaksi()

Bersuara
Guk

Polymorphism pada Python - Part 1 Selain dapat mendefinisikan ulang nilai dari atribut
yang diwarisi oleh parent class seperti pada contoh di atas, aku juga dapat juga dapat mendefin-
isikan ulang fungsi yang telah diwarisi oleh parent class.
Saat aku 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.
Tugas: menerapkan Polymorphism

[ ]: # 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

Aku melakukan pemanggilan konstruktur class Karyawan, menerapkan polymorphism dengan


mendefinisikan kembali fungsi lembur() pada AnalisData, dan menambahkan 10% tambahan pen-
dapatan pada class AnalisData

[ ]: # 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

9
# lembur() pada class AnalisData
def lembur(self):
# pendapatan tambahan pada class AnalisData sebesar
# 10 % dari pendapatannya.
self.pendapatan_tambahan += int(self.pendapatan * 0.1)

fungsi lembur() pada objek aksara sebagai bagian dari class AnalisData akan menambahkan to-
tal_pendapatan milik objek sebesar 850000 (10% dari pendapatannya) mengikuti definisi dari
fungsi lembur() pada class AnalisData

[ ]: # Buat objek karyawan yang bekerja sebagai AnalisData


aksara = AnalisData('Aksara', 25, 8500000)
aksara.lembur()
print('Pendapatan Aksara', 'Rp',aksara.total_pendapatan())

Pendapatan Aksara Rp 9350000

Polymorphism pada Python - Part 2 Pada konsep inheritance, melalui fungsi super(), selain
dapat mengakses constructor milik parent class, child class juga dapat mengakses atribut/fungsi
yang dimiliki oleh parent class.

[ ]: # 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)

10
# Buat objek karyawan yang bekerja sebagai AnalisData
aksara = AnalisData('Aksara', 25, 8500000)
aksara.lembur()
print('Pendapatan Aksara', 'Rp',aksara.total_pendapatan())

Pendapatan Aksara Rp 9175000

Tugas Praktek Program Perhitungan Pembayaran Fee Karyawan Lepas

[ ]: # 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 TenagaLepas sebagai child class dari
# class Karyawan
class TenagaLepas(Karyawan):
def __init__(self, nama, usia, pendapatan):
super().__init__(nama, usia, pendapatan,0)
def tambahan_proyek(self, nilai_proyek):
self.pendapatan_tambahan += int(nilai_proyek*0.01)

Program Perhitungan Pembayaran Fee Karyawan Lepas (Menggunakan inheritance)

[ ]: # Definisikan class Karyawan sebagai parent class


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 TenagaLepas sebagai child class dari

11
# class Karyawan
class TenagaLepas(Karyawan):
def __init__(self, nama, usia, pendapatan):
super().__init__(nama, usia, pendapatan, 0)
def tambahan_proyek(self, nilai_proyek):
self.pendapatan_tambahan += int(0.01 * nilai_proyek)
# Definisikan class AnalisData sebagai child class dari
# class Karyawan
class AnalisData(Karyawan):
pass
# Definisikan class IlmuwanData sebagai child class dari
# class Karyawan
class IlmuwanData(Karyawan):
def tambahan_proyek(self, nilai_proyek):
self.pendapatan_tambahan += int(0.1 * nilai_proyek)
# Definisikan class PembersihData sebagai child class dari
# class TenagaLepas
class PembersihData(TenagaLepas):
pass
# Definisikan class DokumenterTeknis sebagai child class dari
# class TenagaLepas
class DokumenterTeknis(TenagaLepas):
def tambahan_proyek(self, jumlah_tambahan):
return

Overloading Pada bahasa pemrograman lain yang mendukung paradigma OO seperti C#


ataupun Java, polymorphism juga dapat diterapkan melalui sebuah fitur yang dikenal dengan
istilah metode overloading.
Metode overloading mengizinkan sebuah class untuk memiliki sekumpulan fungsi dengan nama
yang sama dan parameter yang berbeda. Berkaitan dengan hal ini, Python tidak mengizinkan
pendeklarasian fungsi (baik pada class ataupun tidak) dengan nama yang sama.
Untuk mengimplementasikan method overloading pada Python, aku dapat menggunakan sebuah
teknik yang dikenal dengan function default parameters.
Tugas Praktik
Perusahaan ABC memiliki 3 orang karyawan baru seperti yang diberikan dalam data berikut:

[ ]: import pandas as pd

data = {'Nama': ['Budi', 'Didi', 'Hadi'],


'Usia': ['?', 25, '?'],
'Pendapatan': ['?', '?', 8000000]}

df = pd.DataFrame(data)

print(df)

12
Nama Usia Pendapatan
0 Budi ? ?
1 Didi 25 ?
2 Hadi ? 8000000
Aku di minta untuk mengisi tabel dengan detail sebagai berikut:
• Budi berusia 21 dan pendapatan = 5000000
• Didi berusia 25 dan pendapatan = 5000000
• Hadi berusia 21 dan pendapatan = 8000000
Maka syntax yang akan di jalankan seperti berikut:

[ ]: class Karyawan:
nama_perusahaan = 'ABC'
insentif_lembur = 250000
# usia akan di-set nilainya menjadi 21 saat tidak
# dispesifikasikan dan pendapatan akan di-set nilainya
# menjadi 5000000 saat tidak dispesifikasikan
def __init__(self, nama, usia=21, pendapatan=5000000):
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
# Karyawan baru pertama yang bernama Budi
karyawan_baru1 = Karyawan('Budi')
print(karyawan_baru1.nama)
print(karyawan_baru1.usia)
print(karyawan_baru1.total_pendapatan())
# Karyawan baru ke-2 yang bernama Didi, umur 25
karyawan_baru2 = Karyawan('Didi', 25)
print(karyawan_baru2.nama)
print(karyawan_baru2.usia)
print(karyawan_baru2.total_pendapatan())
# Karyawan baru ke-3 yang bernama Hadi, pendapatan 8000000
karyawan_baru3 = Karyawan('Hadi',pendapatan=8000000)
print(karyawan_baru3.nama)
print(karyawan_baru3.usia)
print(karyawan_baru3.total_pendapatan())

Budi
21
5000000
Didi

13
25
5000000
Hadi
21
8000000
TERIMA KASIH

14

Anda mungkin juga menyukai