Anda di halaman 1dari 14

Class di Python

Pengenalan Class
• Yang kita lakukan di kelas sejauh ini menggunakan
paradigma pemograman yang terstruktur (structured
programming). Ada paradigma lain yang didukung oleh
Python yaitu pemograman berorientasi objek (OOP:
Object Oriented Programming). Dan dasar dari OOP
adalah tentu saja objek.

• Sejauh ini tanpa anda sadari anda telah menggunakan


objek. Apa anda ingat tentang String? Yup, string
adalah objek! Dictionary masih ingat? Benar, objek
juga!
Tentang Class
• Sebelum membuat objek, kita harus membuat dulu tipe objeknya atau
bahasa codingnya adalah class. Cara membuat class seperti ini:

class NamaClass(object):
# segala sesuatu tentang NamaClass
• NamaClass adalah nama class yang anda ingin buat. Sedangkan
NamaClass(object) menandakan bahwa anda ingin NamaClass ini
merupakan sebuah object. Jika anda ingin membuat objek Gadget, maka
kita bisa buat seperti ini:

class Gadget(object):
sumber_energi = "listrik"
• Dengan ini kita mempunyai sebuah tipe objek bernama Gadget. Dan
semua objek yang bertipe Gadget akan memiliki sebuah properti yang
bernama sumber_energi yang bernilai "listrik".
Membuat Objek
• Sebuah class belumlah berguna sebelum kita membuat objek dari class tersebut. Cara membuatnya
mudah yaitu seperti ini:

nama_objek = nama_class()
• Dengan mengambil contoh dari soal sebelumnya kita bisa membuat sebuah objek dengan cara
berikut:

class Gadget(object):
• sumber_energi = "listrik"

hp = Gadget()
• Variabel hp adalah sebuah objek yang bertipe-objek (class) Gadget. Variabel hp akan memiliki
properti sumber_energi yang bernilai "listrik".

• Untuk mengakses properti dari sebuah objek dapat dilakukan dengan cara berikut:

nama_objek.nama_properti
• Dengan contoh Gadget kita diatas, untuk mencetak sumber_energi dari hp bagaimana kita
melakukannya? Tebakan anda benar:

print hp.sumber_energi
• akan mengeluarkan "listrik"
Tentang __init__()
• Keren! Sekarang kita sudah bisa membuat objek! Tetapi objek yang anda buat belum unik satu sama lainnya, mari
kita buat mereka sedikit berbeda.

class Gadget(object):

sumber_energi = "listrik"

def __init__(self, nama_gadget):


self.nama = nama_gadget
• function di dalam sebuah class disebut sebagai sebuah metode class tersebut. Di sini kita buat sebuah metode
bernama __init__. Metode dengan nama ini sudah direservasi oleh Python sebagai metode yang dipanggil saat
kita membuat sebuah objek. Di setiap metode class harus selalu ada self sebagai parameter pertamanya. Variabel
self merujuk kepada objek dari class tersebut. Di metode ini kita tambah sebuah parameter bernama
nama_gadget. Di metode ini juga kita membuat properti nama dengan sintaks self.nama dan memberikan nilai
dari nama_gadget.

• Karena kita telah menambah parameter nama_gadget di fungsi __init__() berarti saat membuat objek baru kita
harus berikan sebuah parameter seperti ini:

hp = Gadget("Android")
• Dengan code di atas, properti nama dari hp akan menjadi "Android", sementara jika kita buat seperti ini:

tablet = Gadget("iOS")
• Properti nama dari tablet akan menjadi "iOS". dan nama termasuk sebagai variabel pribadi. Sementara itu
sumber_energi yang bernilai 'listrik' di kedua variabel tersebut disebut sebagai variabel bersama.
Menambah Metode
• Selain metode __init__() tentunya kita bisa menambah metode lain yang akan membuat objek kita lebih hidup.
Sintaksnya sama persis:

class Gadget(object):

baterai = 100

def gunakan(self, waktu):


self.baterai = self.baterai - waktu
• Di contoh atas kita simulasikan kapasitas baterai dengan properti baterai. Dan juga setiap kali sebuah objek
Gadget di-gunakan() sebanyak waktu, kita buat baterai akan berkurang sebanyak waktu.

• Kita bisa menggunakan metodenya seperti berikut:

hp = Gadget()

print hp.baterai # 100

hp.gunakan(20)

print hp.baterai # 80
Mutable Properti di Class
• Tentunya anda masih ingat tentang list dan dictionary. List dan dictionary bisa menjadi sebuah
properti di class, tetapi mereka mempunyai perilaku yang berbeda untuk variabel pribadi (di dalam
__init__) dan variabel bersama (di luar __init__).

• Ketika menjadi sebuah variabel bersama, properti yang merupakan list dan dictionary akan selalu
memiliki nilai yang sama di semua objek dari kelas yang sama. Itu dikarenakan list dan dictionary
adalah mutable objek. Berbeda misalnya dengan properti yang bukan mutable objek (string, angka,
dll.) seperti ini:

class Gadget(object):
baterai = 100

hp = Gadget()
tablet = Gadget()

hp.baterai = 90
print tablet.baterai # 100
print hp.baterai # 90
• Perhatikan bahwa walaupun hp mengubah nilai baterai menjadi 90 tetapi nilai baterai dari tablet
tetaplah 100. Hal ini tidak akan terjadi jika baterai merupakan sebuah list.
Mutable Lagi
Inheritance
• Inheritance (warisan atau turunan) adalah sebuah konsep yang
penting di dalam Python. Inheritance adalah sebuah proses dimana
sebuah class mengambil semua properti dan semua metode dari
kelas lain.

• Mari kita ambil contoh dari unit sebelumnya tentang class


Kendaraan. Sebelumnya kita membuat motor dan mobil
berdasarkan Kendaraan. Tetapi kita akan mengalami masalah
karena motor dan mobil walaupun memiliki banyak kesamaan
tetapi mereka sebenarnya berbeda. Solusinya adalah kita membuat
kelas baru bernama Mobil dan Motor yang merupakan turunan
Kendaraan. Di Kendaraan kita definisikan semua metode dan semua
properti yang umum dimiliki sebuah kendaraan. Lalu di Mobil dan
Motor kita definisikan metode dan properti yang unik untuk
masing-masing kelas tersebut.
Inheritance Anda Sendiri
• Dari unit sebelumnya anda pasti sudah dapat menebak
bahwa sintaks turunan seperti ini:

class Pewaris(PemberiWarisan):
# dan lain-lain
• Sering sekali di programming 'Pewaris' disebut sebagai
kelas anak (children) dan 'PemberiWarisan' disebut sebagai
kelas orang tua (parent).

• Dan benar juga tebakan anda, sebelumnya saat anda


melakukan Gadget(object) sebenarnya anda membuat
turunan Gadget berdasarkan kelas object.
Override
• Dalam penurunan kelas kita bisa melakukan penggantian metode orang-tua (parents) di kelas anak (children).
Caranya mudah sekali cukup tulis ulang nama metodenya yang sama seperti ini contohnya:

class Ortu(object):
def metode_anu(self)
# lakukan anu

class Anak(Ortu):
def metode_anu(self)
# lakukan anu menurut Anak
• Di contoh atas kita punya metode_anu lagi di kelas Anak. Nantinya setiap objek dari Anak akan merujuk ke
metode_anu di Anak alih-alih di Ortu. Tetapi, objek dari kelas Ortu tetap akan menggunakan metode_anu dari
kelas Ortu.

• Lalu bagaimana jika kedua metode tersebut hanya berbeda sedikit saja? Kita gunakan super(). Fungsi super()
berguna untuk memanggil metode dari kelas orang tua. Sehingga kita bisa melakukan hal yang unik di kelas anak
dan setelah selesai panggil lagi metode orangtuanya. Contohnya seperti ini:

class Anak(Ortu):
def metode_anu(self)
# lakukan anu menurut Anak
# setelah selesai kita panggil
super(Anak, self).metode_anu()
• Perhatikan baik-baik sintaks function super().
Override Anda Sendiri
Kesimpulan Class
• Selamat, anda sudah menguasai konsep dari
OOP! Di Python kita tidaklah harus
menggunakan OOP, di CodeSaya sendiri dalam
mengembangkan platform ini tidak selalu
menggunakan OOP. Jika dirasa programnya
akan rumit maka gunakanlah OOP, jika tidak
pemograman terstruktur sudah sangat
memadai.
Kesimpulan Python
• Akhirnya kita sampai juga ke penghujung dari kelas Python! Semoga
semua yang anda pelajari di sini bisa berguna untuk anda. Untuk
membuat ilmu ini berguna ada beberapa cara:

• Buatlah sesuatu entah itu website, app, atau script apapun. Anda
bisa menunjukkannya di artikel CodeSaya. Ceritakan bagaimana
anda mencapainya.

• Mengajarkan teman-teman yang lain. Saat anda mengajarkan dan


membantu teman-teman yang sedang belajar, sesungguhnya anda
pun sedang belajar. Ilmu anda akan terus nempel dan anda akan
mendapatkan imbalan dari Tuhan YME. Jika anda kesulitan untuk
mencari orang yang ingin dibantu, coba tengok forum diskusi.

Anda mungkin juga menyukai