[Tips OOP]: Penggunaan SELF pada Kelas Python

Beberapa saat yang lalu, kita sedikit banyak telah belajar tentang pemrograman berorientasi obyek di Python. Nah, kali ini, kita akan belajar lebih jauh tentang argumen self. Bagaimana penggunaan self pada kelas? Seberapa penting peran argumen self dalam kelas Python? So…sambil menunggu partai seru EURO 2012 Spanyol vs Italia, langsung saja kita menuju ke Te-Ka-Pe!

Untuk memulai pembelajaran kali ini, kita akan banyak bekerja menggunakan mode prompt interpreter. Dan kita tuliskan dulu kode program kelas Dompet seperti di bawah ini,

>>> class Dompet:
...     "Alur Kas Pribadi."
...     jmlDompet = 0
...     def __init__(self, total=0):
...             self.total = total
...             Dompet.jmlDompet += 1
...     def pemasukan(self, jmlUang):
...             self.total += jmlUang
...             self.totalUang()
...     def pengeluaran(self, jmlUang):
...             self.total -= jmlUang
...             self.totalUang()
...     def totalUang(self):
...             print "Jumlah Uang: Rp. %.2f" %self.total

Kelas Dompet di atas, memiliki sebuah dokumen (dapat kita akses dengan Dompet.__doc__), sebuah info jumlah dompet yang ada, dan tiga metode.

Dalam mendefinisikan sebuah metode, caranya hampir sama dengan ketika kita mendefinisikan sebuah fungsi, namun kita perlu menambahkan argumen self di setiap metode yang akan kita buat. Penulisan argumen self sering digunakan oleh sebagian besar programmer Python. Kata self bukanlah sebuah keharusan, kita bisa menggantinya dengan apapun, misalkan aku, me, dst. Pada Java dan C++ sering ditulis dengan this. Python secara otomatis telah menambahkan argumen self tersebut, sehingga kita tidak perlu menuliskannya lagi pada saat kita akan memanggil suatu metode.

Metode pertama adalah sebuah konstruktor, yang akan dijalankan pertama kali oleh interpreter Python ketika kita membuat sebuah instan baru dari kelas Dompet. Dua metode selanjutnya berperan dalam proses alur kas dari Dompet.

Obyek Dompet memiliki dua tipe data yaitu jmlDompet, yang mana terletak di luar metode dari kelas, disebut sebagai variabel kelas, yang berarti semua instan dari kelas akan saling berbagi pakai dengan variabel ini. Jika kita mengubah nilai dari variabel ini pada salah satu instan kelas, maka akan mengubah nilai untuk semua instan kelas lainnya. Berikut contohnya,

>>> dompetKu = Dompet(); dompetMu = Dompet()
>>> print dompetKu.jmlDompet, dompetMu.jmlDompet
2 2

Tipe data yang lain disebut sebagai variabel instan, yang mana variabel ini didefinisikan di dalam sebuah metode dan hanya berlaku pada instan obyek tersebut. Variabel total merupakan instan variabel dari kelas Dompet. Untuk menentukan apakah variabel tersebut merupakan instan variabel, caranya cukup mudah, kita perlu menambahkan argumen self di depan nama variabel. Hal ini berlaku untuk data ataupun metode.

>>> d = Dompet(1000)
>>> d.pemasukan(5000)
Jumlah Uang: Rp. 6000.00
>>> d.pengeluaran(2500)
Jumlah Uang: Rp. 3500.00
>>> d.total
3500

Wow!…Ternyata penggunaan self sangatlah penting jika kita bermain-main dengan kelas Python.

Woke!…Tetap Semangat!…Salam PythonMania!

4 comments

    1. salam kenal buat mas G ..

      dari beberapa GUI toolkit yang kami pelajari, yang paling mudah ya Tkinter…hehehe. Namun Tkinter sangat terbatas dalam hal komponen dan tampilannya pun kurang update.

      Saran:
      pelajari dulu Tkinter. setelah kita paham, kita bisa belajar yang lain ada wxPython, PyGTK, pyQT. kalo untuk buat aplikasi profesional, kayaknya perlu dicoba pyGTK.

      Salam PythonMania!

      1. ini nih yang gue bertanya, kirain cuma ada Tkinter, pdhal Tkinter tmpilan ny sederhana bener.
        nice info gan

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s