Public, Protected dan Private Property

Posted At: 27 Jun 2020 10:37:00

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}
Yulrio Brianorman
Blogger, pemiliki Onestring Lab, menulis artikel terkait teknologi informasi dan pendidikan. Web Developer, berpengalaman lebih dari 20 tahun mengembangkan berbagai aplikasi dan sistem informasi. Kerjasama : kontak saya.