Jenis Variabel ditinjau dari “Jumlah Copy-nya”
Variabel di dalam OOP python jika ditinjau dari jumlah copy-nya, maka ia terbagi menjadi 2: yang pertama adalah static variable, dan yang kedua adalah instance variable.
Keduanya sama-sama variabel seperti umumnya. Bedanya, variabel statis hanya memiliki satu copy saja di dalam memory selama aplikasi berjalan, sedangkan instance variable bisa memiliki banyak copy sesuai dari banyaknya instan.
Instance Variable
Dinamakan instance variable karena variabel tersebut adalah milik dari tiap instance/objek dari suatu kelas. Artinya, jika sebuah kelas memiliki instance variable dengan nama a
, maka setiap instance dari kelas tersebut akan memiliki variabel a
sendiri-sendiri.
Di dalam python, setiap variabel yang didefinisikan di dalam fungsi pada sebuah kelas (lewat variabel self
), maka ia dikatakan instance variable.
Perhatikan contoh berikut:
class Mahasiswa:
def __init__(self, nama):
self.nama = nama
Pada contoh di atas, kelas Mahasiswa
memiliki atribut nama
yang dilekatkan ke dalam objek self
. Itu artinya: setiap instance/objek dari kelas Mahasiswa
akan memiliki variabel nama
dengan nilainya masing-masing.
Sekarang, buat dua instance dari kelas Mahasiswa
:
budi = Mahasiswa('Budi')
andi = Mahasiswa('Andi')
Pada kode program di atas: instance dengan nama budi
dan andi
masing-masing memiliki atribut/variabel nama
dengan nilai yang berbeda.
Pertanyaannya adalah: ada berapa copy dari variabel nama
selama program dijalankan?
Jawabannya: ada 2 copy. Karena variabel nama
adalah instance variable dan jumlah copy-nya sama dengan jumlah instance dari kelas yang bersangkutan.
Mari kita tampilkan masing-masing nilai dari variabel nama
:
print(budi.nama)
print(andi.nama)
Output:
Budi
Andi
Static Variable atau Class Variable
Seperti yang telah disinggung di atas bahwasanya static variable adalah variabel statis yang jumlah copy-nya hanya ada satu saja selama aplikasi dijalankan.
Misal kita memiliki sebuah kelas, dan kelas tersebut memiliki seratus instance, tetap saja static variable dari kelas tersebut hanya ada satu saja di memori. Oleh karena itu, static variable juga sering dikenal dengan istilah class variable.
Perhatikan contoh berikut:
class Mahasiswa:
# static atau class variable
jenjang = 'S1'
def __init__(self, nama):
# instance variable
self.nama = nama
Pada kode di atas, terdapat dua buah variabel. Yang pertama adalah variabel jenjang
yang merupakan variabel static –di mana ia disandarkan langsung kepada kelas Mahasiswa
–. Dan yang kedua adalah variabel nama
yang mana ia disandarkan kepada objek self
alias kepada instance yang bersangkutan.
Kita bisa mengakses langsung variabel jenjang
tanpa harus membuat objek, akan tetapi kita tidak bisa mengakses variabel nama
tanpa membuat sebuah objek.
Perhatikan contoh berikut:
>>> Mahasiswa.jenjang
'S1'
>>> Mahasiswa.nama
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'Mahasiswa' has no attribute 'nama'
>>>
Variabel statis juga bisa kita akses melalui instance dari suatu kelas:
>>> budi = Mahasiswa('Budi')
>>> budi.jenjang
'S1'
>>>
Kalau kita ingin mengubah isi dari variabel statis, kita harus mengubahnya lewat nama kelas tersebut secara langsung dan bukan melalui objek dari kelas yang bersangkutan.
Perhatikan contoh berikut:
>>> budi = Mahasiswa('Budi')
>>> budi.jenjang
'S1'
>>> andi = Mahasiswa('Andi')
>>> andi.jenjang
'S1'
>>> Mahasiswa.jenjang = 'S3'
>>> andi.jenjang
'S3'
>>> budi.jenjang
'S3'
Kesimpulan
Dari pertemuan kali ini bisa kita simpulkan bahwa variabel dalam konteks OOP pada python, jika ditinjau dari jumlah copy-nya terbagi menjadi dua: static variable dan instance’s variable.
Static variable hanya memiliki satu copy saja sedangkan instance variable memiliki jumlah copy yang sama sesuai dengan jumlah instan yang ada.
Variable static didefinisikan secara langsung di dalam blok kode class
, berbeda dengan instance variable yang mana ia disandarkan ke dalam objek self
pada method sebuah class
.
Kode Program Lengkap
Untuk kode program lengkap pada pertemuan kali ini, kalian bisa mendapatkannya di sini.
Pertemuan Selanjutnya
Pada pertemuan selanjutnya insyaallah kita akan membahas tentang static method pada python.
Ia hampir sama dengan static variable, yaitu sebuah fungsi/method yang bersifat statis dan bisa dipanggil tanpa harus membuat sebuah instan.
Bagaimana caranya?
Simak terus tutorial ini, ya! Terima kasih banyak.