Posted At: 27 Jun 2020 10:37:00
Public, Protected dan Private
Pada artikel ini akan dibahas mengenai konsep public, protected dan private property pada pemrograman Python. Setelah mempelajari modul ini maka pembaca akan memahami konsep public, protected dan private.
Pada modul sebelum telah dipelajari mengenai pembuatan property. Property yang telah dipelajari sebelumnya adalah public property. Property yang public dapat dirubah secara langsung. Berikut ini contohnya:
class Manusia(object):
def __init__(self, nama, jk, bb, tb):
self.nama = nama
self.jk = jk
self.bb = bb
self.tb = tb
anto = Manusia("Anto", "Pria", 65, 160)
print(anto.__dict__)
anto.nama = "Wisnu"
print(anto.__dict__)
anto.jk = "Wanita"
print(anto.__dict__)
Pada contoh diatas dapat dilihat bahwa property nama dan jk dapat dirubah secara langsung dengan menggunakan operator “=”. Agar property tidak dapat dirubah secara langsung maka property harus dijadikan private. Untuk menjadikan property menjadi private maka digunakan tanda "__". Pada contoh berikut ini property nama akan dijadikan private.
class Manusia(object):
def __init__(self, nama, jk, bb, tb):
# private property
self.__nama = nama
self.jk = jk
self.bb = bb
self.tb = tb
anto = Manusia("Anto", "Pria", 65, 160)
print(anto.__dict__)
anto.nama = "Wisnu"
print(anto.__dict__)
anto.jk = "Wanita"
print(anto.__dict__)
Berikut ini hasil keluarannya :
{'_Manusia__nama': 'Anto', 'jk': 'Pria', 'bb': 65, 'tb': 160}
{'_Manusia__nama': 'Anto', 'jk': 'Pria', 'bb': 65, 'tb': 160,
'nama': 'Wisnu'}
{'_Manusia__nama': 'Anto', 'jk': 'Wanita', 'bb': 65, 'tb': 160,
'nama': 'Wisnu'}
Terlihat pada program diatas bahwa terdapat tambahan property yaitu 'nama': 'Wisnu' sedangkan untuk property 'jk' maka berhasil dirubah menjadi "Wanita". Property private mempunyai aturan tidak bisa diakses langsung dan tidak bisa diubah langsung.
Untuk tipe property protected mempunyai aturan sama dengan public pada class yang sama, namun akan berbeda perlakuannya nanti pada saat inheritance. Membuat property protected dengan menggunakan tanda "_". Berikut ini contoh property protected.
class Manusia(object):
def __init__(self, nama, jk, bb, tb):
# private property
self.__nama = nama
# protected property
self._jk = jk
self.bb = bb
self.tb = tb
anto = Manusia("Anto", "Pria", 65, 160)
anto._jk = "Wanita"
print(anto.__dict__)
print(anto._jk)
Berikut ini hasil keluarannya :
{'_Manusia__nama': 'Anto', '_jk': 'Wanita', 'bb': 65, 'tb': 160,
'__nama': 'Wanita'}
Wanita
Terlihat pada contoh bahwa property protected dapat dirubah secara langsung dan dapat diakses secara langsung.
Untuk dapat mengakses dan merubah property private maka harus dibuatkan method untuk merubahnya. Berikut contoh programnya.
class Manusia(object):
def __init__(self, nama, jk, bb, tb):
# private property
self.__nama = nama
self.jk = jk
self.bb = bb
self.tb = tb
def rubahNama(self, nama):
self.__nama = nama
def panggilNama(self):
return self.__nama
anto = Manusia("Anto", "Pria", 65, 160)
anto.rubahNama("Budiman")
print(anto.panggilNama())
print(anto.__dict__)
Pada keluaran dari program tersebut terlihat property nama yang bersifat private berhasil dirubah dan diakses menggunakan method.
Budiman
{'_Manusia__nama': 'Budiman', 'jk': 'Pria', 'bb': 65, 'tb': 160}