Membuat Class di Python

Ridwan Fajar 8 Februari 2017

Membuat Class di Python

Class adalah salah satu cara bagaimana kita membuat sebuah kode yang mempunyai behaviour tertentu dan lebih mudah dalam mengorganisasi berbagai fungsi dan state-nya. Dalam sebuah class kamu dapat menyimpan sebuah state tanpa harus membuat banyak state bila tidak menggunakan class.

Dalam hal ini, kita dapat membuat sebuah objek yang memiliki variable dan method-nya sendiri. Dan setiap objek yang dihasilkan akan memiliki karakteristik yang berbeda dibandingkan objek lainnya. Dalam sebuah objek tentu ada variabel yang dapat diakses secara langsung (s) ataupun dirahasiakan (private). Dalam contoh ini kamu akan membuat sebuah class Product dan membuat dua objek dengan atribut yang berbeda dari class tersebut.

class Product:
	__vendor_message = "Ini adalah rahasia"
	name = ""
	price = ""
	size = ""
	unit = ""

	def __init__(self, name):
		print "Ini adalah constructor"
		self.name = name
		self.unit = "ml"
		self.size = 250

	def get_vendor_message(self):
		print self.__vendor_message

	def set_price(self, price):
		self.price = price

p = Product("Ultora Milek")
p.set_price(5500)

print "%s dengan ukuran %s %s harganya Rp. %d" % (p.name, p.size, p.unit, p.price)
# print p.__vendor_message

p.get_vendor_message()

p1 = Product("Indomilek")
p1.set_price(5000)

print "%s dengan ukuran %s %s harganya Rp. %d" % (p.name, p.size, p.unit, p.price)

print p == p
print p1 == p1
print p == p1

Bila kita jalankan di console maka akan tampil output berikut:

$ python classes.py
Ini adalah constructor
Ultora Milek dengan ukuran 250 ml harganya Rp. 5500
Ini adalah rahasia
Ini adalah constructor
Ultora Milek dengan ukuran 250 ml harganya Rp. 5500
True
True
False

Lalu apa maksud dari semua ini :D? Struktur sebuah class di Python salah satunya adalah seperti ini:

class Product:
	__vendor_message = "Ini adalah rahasia"
	name = ""
	price = ""
	size = ""
	unit = ""

	def __init__(self, name):
		print "Ini adalah constructor"
		self.name = name
		self.unit = "ml"
		self.size = 250

	def get_vendor_message(self):
		print self.__vendor_message

	def set_price(self, price):
		self.price = price

Pertama kita gunakan keyword class diikuti dengan nama class yang kita inginkan. Lebih baik kamu gunakan kata yang diawali huruf kapital. Kemudian kita tentukan atribut apa saja yang dimiliki oleh class. Disana ada vendor_message, name, price, size, dan unit.

Untuk atribut yang bersifat privat, kamu dapat menggunakan underscore ( _ ) dua kali di awal nama variabel untuk membuatnya privat. Sedangkan untuk atribut publik cukup dengan nama yang diawali huruf alfabet.

Kemudian untuk constructor kita gunakan method bawaan Python yang bernama _ _ init _ _. Setiap method harus memiliki parameter self yang artinya method tersebut dimiliki dan terdaftar ke class tersebut untuk membedakan dari method atau fungsi yang ada di luar class. Selanjutnya constructor dapat memiliki atribut tambahan sesuai kebutuhan. Dalam hal ini, constructor Product memiliki parameter name yang harus selalu diisi saat membuat objek. Di dalam constructor terdapat inisialisasi atribut untuk name, unit, dan size.

Kmeudian untuk mengambil suatu atribut yang bersifat privat, kita harus membuat sebuah method yang membantu kita mengambil atribut privat tersebut. Dalam hal ini kita ambil vendor_message dengan menggunakan method get_vendor_message(). Kemudian kita juga dapat membuat method lain untuk melakukan aksi tertentu. Misal kita membuat method set_price() untuk mengisi atribut price.

Baca juga: Kumpulan Tutorial Belajar Bahasa Pemrograman Python

Di bagian berikutnya, kita buat dua buah objek yang berbeda dengan menggunakan class Product.

p = Product("Ultora Milek")
p.set_price(5500)

print "%s dengan ukuran %s %s harganya Rp. %d" % (p.name, p.size, p.unit, p.price)
# print p.__vendor_message

p.get_vendor_message()

p1 = Product("Indomilek")
p1.set_price(5000)

print "%s dengan ukuran %s %s harganya Rp. %d" % (p.name, p.size, p.unit, p.price)

Untuk membuat sebuah objek di Python, kamu tidak perlu menggunakan statement new seperti di Java atau PHP. Layaknya memanggil sebuah method, kamu tinggal membuat objek dengan memanggil nama class yang telah dibuat, dan mengisi constructor sesuai dengan parameter yang dibutuhkan. Untuk mengambil atribut publik, kamu cukup menggunakan dot atau titik setelah nama objek dan memanggil atributnya. Pada kode diatas, bagian saat memanggil langsung atribut privat dikomentari terlebih dahulu. Bila kita hapus komentarnya dan skrip dijalankan ulang, maka akan muncul error seperti berikut:

$ python classes.py
Ini adalah constructor
Ultora Milek dengan ukuran 250 ml harganya Rp. 5500
Traceback (most recent call last):
  File "classes.py", line 24, in <module>
    print p.__vendor_message
AttributeError: Product instance has no attribute '__vendor_message'

Padahal kita telah membuatnya di dalam class hanya saja atribut tersebut dilindungi dari lingkungan luar. Dan yang terakhir kita memeriksa setiap objek apakah bernilai sama:

print p == p
print p1 == p1
print p == p1

Ternyata walaupun dihasilkan dari class yang sama, namun kedua objek tersebut merupakan objek yang berbeda yang tinggal berada di dalam memory komputer kita.

(rfs/python)