Definisi kelas
kelas adalah struktur data yang bisa kita gunakan untuk mendefinisikan objek yang menyimpan data bersama-sama nilai-nilai dan perilaku (behavior). Kelas adalah suatu entitas yang merupakan bentuk program dari suatu abstraksi untuk permasalahan dunia nyata, dan instance dari class merupkan realisasi dari beberapa objek. Jika dianalogikan, kelas itu merupakan blueprint (cetak biru) dari sebuah objek (instance). Lihat analogi gambar dibawah ini :

Dog adalah base class, dan Rayne (nama dari dog) adalah object.
Objek pada python tidak selalu berarti instansiasi dari kelas, list dan bilangan (integer) juga merupakan objek, tetapi bukan merupakan instansiasi dari kelas.
Seperti halnya fungsi, membuat kelas harus didefinisikan terlebih dahulu, berikut ini adalah format definisi kelas pada python:
class nama_kelas:
["dokumentasi_kelas"]
<pernyataan_1>
...
...
<pernyataan_n>
Contoh kelas paling sederhana pada python (kelas tidak berisi):
class predator:
pass
Instansiasi
Setelah suatu kelas didefinisikan, kelas dapat digunakan untuk mencetak objek. contoh:
depredac0de = predator()
predator() digunakan untuk membentuk instan kelas (objek yang berkelas predator). Proses penciptaan objek seperti itu disebut instansiasi, variabel depredac0de ditugasi untuk mereferensi ke objek predator.
Atribut didalam definisi kelas
Atribut merupakan data atau bisa juga berupa fungsi-fungsi yang dimiliki oleh kelas tersebut. Atribut kelas terikat hanya untuk kelas-kelas dimana atribut tersebut didefinisikan. Atribut data merupakan veriabel-variabel yang kita deklarasikan. Variabel-variabel tersebut dapat digunakan seperti variabel lainnya dan dapat di ubah-ubah nilainya oleh method didalam kelas ataupun di dalam program utama.
>>> class X:
bil = 100
>>> print x.bil
100
>>> X.bil = X.bil + 10
>>> print X.bil
110
>>> class predator:
nama = "<belum diisi>"
hobby = "<belum ditentukan>"
>>> depredac0de1 = predator()
>>> depredac0de2 = predator()
>>> depredac0de1.nama = "5ynL0rd"
>>> depredac0de1.hobby = "main-main"
>>> print depredac0de1.nama
5ynL0rd
>>> print depredac0de1.hobby
main-main
>>> print depredac0de2.nama
<belum diisi>
>>> print depredac0de2.hobby
<belum ditentukan>
Atribut diluar definisi kelas
Sebuah objek dapat memiliki data atau biasa disebut atribut. Atribut dapat ditambahkan sewaktu-waktu diluar definisi kelas. contoh:
>>> class predator:
pass
>>> depredac0de1 = predator()
>>> depredac0de1.nama = "5ynL0rd"
>>> depredac0de1.hobby = "main-main"
Contoh diatas ada penambahan 2 buah atribut ke objek yang dirujuk oleh variabel depredac0de1, jika saya representasikan ke sebuah gambar, adalah sebagai berikut:
depredac0de1 objek berkelas predator
+-------------+ +-----------------------+
| | ------------------> | "5ynL0rd" | nama
+-------------+ |-----------------------|
| "main-main" | hobby
+-----------------------+
Sehingga untuk memperoleh nilai dari kedua atribut tersebut kita hanya cukup menulis pernyataan seperti:
>>> print depredac0de1.nama
5ynL0rd
>>> print depredac0de1.hobby
main-main
Atribut yang ditambahkan tersebut bersifat khas, artinya bila menciptakan objek baru berdasarkan kelas predator, kedua atribut tersebut tidak dikenal pada objek baru tersebut.contoh:
>>> depredac0de2 = predator()
>>> print depredac0de2.nama
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
print depredac0de2.nama
AttributeError: predator instance has no attribute 'nama'
Method, constructor & destructor
Sebuah kelas tidak hanya mengandung atribut seperti yang saya jelaskan sebelumnya, tapi juga bisa mengandung method. Apa itu method?
Method adalah suatu fungsi yang melekat pada objek. Contoh method:
nama_objek.nama_method()
sedangkan fungsi tidak melekat pada objek, contoh:
nama_fungsi()
Contoh real pada pemrograman python:
fungsi:
s = "halo"
len(s)
len() merupakan fungsi untuk menghitung jumlah string
method:
s = "halo"
s.upper()
upper() merupakan method untuk membuat string menjadi uppercase
Dalam terminologi pemrograman berorientasi objek, terdapat istilah constructor dan destructor. Constructor adalah method yang akan dijalankan ketika suatu objek diciptakan. Destructor adalah method yang akan dijalankan ketika objek dimusnahkan.
Di dalam Python constructor berupa method dengan nama __init__() dan destructor berupa method dengan nama __del__(), contoh berikut memberikan gambaran pembentukan kelas yang terdapat constructor, destructor, dan sebuah method untuk menampilkan variabel instan dan variabel kelas:
>>> class predator:
alive = 0
def __init__(self, name):
self.name = name
predator.alive += 1
def __del__(self):
predator.alive -= 1
def info(self):
print "predator = ",self.name
print "predator alive = ",predator.alive
>>> predatorA = predator("jojon")
>>> predatorB = predator("gogon")
>>> predatorC = predator("tarsan")
>>> print predator.alive
3
>>> predatorA.info()
predator = jojon
predator alive = 3
Kelas predator pada contoh diatas melibatkan sebuah atribut yang secara lebih khusus disebut variabel kelas, yaitu variabel yang bernama alive, variabel tersebut diisi dengan 0 melalui pernyataan berikut:
alive = 0 Variabel ini akan dipakai untuk mencatat objek predator yang sedang hidup, pada keadaan awal nilainya 0, yang berarti tidak ada predator yang hidup.
Semua method (termasuk constructor & destructor) dalam kelas selalu mengandung argumen pertama berupa kata self, yang menyatakan objek yang bersangkutan. Definisi constructor berupa:
def __init__(self, name):
self.name = name
predator.alive += 1
Perhatikan method tersebut menggunakan dua argumen, berupa self dan name. Dalam hal ini argumen kedua dapat digunakan untuk memberikan nilai ketika objek diciptakan.
Pernyataan self.name = name Merupakan instruksi untuk memberikan variabel instan bernama name milik objek bersangkutan (yang ditulis dgn self.name) dengan nilai argumen name. Adapun:
predator.alive += 1 Merupkana pernyataan untuk menaikkan nilai pada variabel kelas bernama alive (ditulis dengan notasi predator.alive) sebesar 1, dengan adanya constructor inilah maka dimungkinkan untuk menciptakan objek seperti berikut:
predator("jojon")
Definisi destructor:
def __del__(self):
predator.alive -= 1
Destructor diatas digunakan untuk mengurangi nilai pada variabel kelas alive ketika suatu objek dihapus. adapun:
def info(self):
print "predator = ",self.name
print "predator alive = ",predator.alive
Merupakan method yang digunakan untuk menampilkan variabel instan name (ditulis dengan self.name) dan variabel kelas alive (ditulis dengan predator.alive).
dan terakhir adalah tiga pernyataan berikut:
predatorA = predator("jojon")
predatorB = predator("gogon")
predatorC = predator("tarsan")
Digunakan untuk menciptakan 3 buah predator, masing-masing bernama "jojon","gogon" dan "tarsan". Setelah ketiga objek tersebut diciptakan,nilai variabel kelas alive bernilai 3.
kita bisa mencoba menghapus salah satu objek tersebut dgn cara sebagai berikut:
>>> del predatorB
>>> print predator.alive
2
Manipulating data
Class methods memanipulasi attributes dari objects.
Contoh methods access untuk data melalui self parameter.
class pet:
number_of_legs = 0
def sleep(self):
print "zzz"
def count_legs(self):
print "I have %s legs" % self.number_of_legs
doug = pet()
doug.number_of_legs = 4
doug.count_legs()