Belajar Python: Class dan Objek

Seingat saya sewaktu kuliah dulu terkait Class dan Objek ini adalah:

Objek: Sebuah objek biasanya memiliki beberapa “atribut” atau “properti” dan juga sebuah fungsi. Misal dalam “objek manusia” umumnya mempunyai atribut nama, umur, berat badan, dan lainnya. Manusia juga memiliki fungsi misalkan mengenalkan diri, makan, dan lainnya.

Class: Sederhananya adalah template atau blueprint dari sebuah objek. Misal dari class manusia kita bisa mendefiniskan objek-objek manusia lainnya.

Sekali lagi koreksi jika saya salah

Membuat Class

class Hooman:
    name = ""
    age = ""
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def introduce(self):
        print("Nama Saya "+ self.name)
        print("Umur saya "+ self.age +" tahun")

Di atas saya mendeklarasikan sebuah class “Hooman” alias manusia, pada class tersebut memiliki atribut name dan age. Ada juga sebuah fungsi introduce() alias perkenalan, dan ada fungsi constructor yang ditandai dengan nama __init__.

Mendeklarasikan Objek

Saya hendak mendeklarasikan sebuah objek manusia dari class Hooman, dengan karakteristik namanya puch usianya 18 tahun. Caranya:

h1 = Hooman('puch','18')

Di atas maksudnya variable h1 merupakan objek dari class Hooman yang diberi nilai namanya ‘puch’ dan usianya ’18’, sesuai urutan pada constructor yaitu name duluan baru setelah itu age, sedangkan untuk parameter self sendiri itu sebagai parameter wajib di dalam fungsi di class.

Setelah berhasil dideklarasikan kita bisa memanggil atribut maupun fungsi dari class tersebut.

print(h1.name)
# puch
print(h1.age)
# 18
# Memanggil method/fungsi perkenalan
h1.introduce()
# Nama Saya Puch
# Umur saya 18 tahun

Kalau hendak membuat objek manusia lainnya

h2 = Hooman('john doe',"35")
print(h2.name)
# john doe
print(h2.age)
# 35
# Memanggil method/fungsi perkenalan
h2.introduce()
# Nama Saya john doe
# Umur saya 35 tahun

Private Property

Misal jika kita ingin ada sebuah properti private dalam class Hooman, kita bisa mendeklarasikannya dengan cara nama properti diawali dua kali underscore ( _ )

class Hooman:
    __weight = "rahasia"
    name = ""
    age = ""
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def introduce(self):
        print("Nama Saya "+ self.name)
        print("Umur saya "+ self.age +" tahun")

Sebuah atribut privat tidak dapat langsung dipanggil, misalkan

h3 = Hooman('depuch','18')
h3.__weight
# AttributeError: 'Hooman' object has no attribute '__weight'

Hasilnya akan mengeluarkan pesan error tersebut dianggap tidak ada atribut tersebut.

Untuk memanggil atirbut privat caranya kita cukup mendeklarasikan sebuah fungsi saja

class Hooman:
    __weight = "rahasia"
    name = ""
    age = ""
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def introduce(self):
        print("Nama Saya "+ self.name)
        print("Umur saya "+ self.age +" tahun")
    
    def get_weight(self):
        print (self.__weight)

Terus memanggilnya

h3.get_weight()
# rahasia

Referensi:
1. https://www.youtube.com/watch?v=wfcWRAxRVBA&list=PLBZBJbE_rGRWeh5mIBhD-hhDwSEDxogDg
2. https://www.codepolitan.com/membuat-class-di-python-589528b4d558d