Python - Kelas dan Objek

Halo semua, pemrogram Python yang berbakat! Hari ini, kita akan melakukan perjalanan yang menarik ke dalam dunia Pemrograman Berorientasi Objek (OOP) di Python. Tetap kalem, karena kita akan mengubah cara Anda berpikir tentang kode!

Python - Classes & Objects

Apa itu Kelas di Python?

Bayangkan Anda membangun kebun binatang virtual. Anda tidak akan membuat setiap hewan dari awal, kan? Itulah saat kelas menjadi sangat berguna!

Sebuah kelas di Python seperti peta rancangan atau templat untuk membuat objek. Kelas tersebut mendefinisikan sekumpulan atribut dan metode yang akan dimiliki oleh objek dari kelas tersebut.

Mari kita buat kelas sederhana untuk mewakili sebuah anjing:

class Anjing:
def __init__(self, nama, jenis):
self.nama = nama
self.jenis = jenis

def gong(self):
print(f"{self.nama} berkata Woof!")

Dalam contoh ini, Anjing adalah kelas kita. Kelas ini memiliki atribut seperti nama dan jenis, serta metode yang disebut gong().

Membuat Kelas di Python

Membuat kelas seberapa mudahnya dengan menggunakan kata kunci class diikuti dengan nama kelas. Mari kita buat kelas Mobil yang lebih detil:

class Mobil:
def __init__(self, merk, model, tahun):
self.merk = merk
self.model = model
self.tahun = tahun
self.odometer = 0

def drive(self, jarak):
self.odometer += jarak
print(f"Berkendara {jarak} mil. Total: {self.odometer} mil")

def honk(self):
print("Beep beep!")

Di sini, __init__ adalah metode khusus yang disebut konstruktor. Metode ini dipanggil ketika kita membuat objek baru dari kelas ini.

Apa itu Objek?

Jika kelas adalah peta rancangan, objek adalah "barang" aktual yang dibuat dari peta rancangan tersebut. Objek adalah contoh khusus dari sebuah kelas.

Membuat Objek dari Kelas di Python

Membuat objek (juga disebut instansiasi) seperti menggunakan peta rancangan kita untuk membuat sesuatu yang nyata. Mari kita buat beberapa mobil:

mobil_ku = Mobil("Toyota", "Corolla", 2020)
mobil_kamu = Mobil("Honda", "Civic", 2019)

print(mobil_ku.merk)  # Output: Toyota
mobil_kamu.drive(50)  # Output: Berkendara 50 mil. Total: 50 mil
mobil_ku.honk()  # Output: Beep beep!

Setiap mobil adalah objek terpisah dengan kumpulan atribut dan metode sendiri.

Mengakses Atribut Objek di Python

Kita dapat mengakses atribut objek menggunakan notasi titik. Mari kita periksa mobil kita:

print(f"Mobil saya adalah {mobil_ku.tahun} {mobil_ku.merk} {mobil_ku.model}")
# Output: Mobil saya adalah 2020 Toyota Corolla

Atribut Kelas Built-In di Python

Kelas Python datang dengan beberapa atribut built-in. Mari kita eksplorasi mereka:

class MyClass:
x = 5

print(MyClass.__name__)  # Output: MyClass
print(MyClass.__module__)  # Output: __main__
print(MyClass.__dict__)  # Output: {'__module__': '__main__', 'x': 5, ...}

Kelas Built-in dari Tipe Data Python

Apakah Anda tahu bahwa tipe data dasar Python juga adalah objek? Mari kita cek:

print(type(5))  # Output: <class 'int'>
print(type("Halo"))  # Output: <class 'str'>
print(type([1, 2, 3]))  # Output: <class 'list'>

Semua hal di Python adalah objek!

Pengumpulan Sampah (Menghancurkan Objek) di Python

Di Python, kita tidak perlu secara manual menghancurkan objek. Pengumpul sampah Python secara otomatis mengurusinya ketika objek tidak lagi digunakan.

import gc

# Membuat objek
mobil_ku = Mobil("Toyota", "Corolla", 2020)

# Menghapus referensi
mobil_ku = None

# Memaksa pengumpulan sampah (biasanya tidak perlu)
gc.collect()

Penyembunyian Data di Python

Di OOP, kita sering ingin mengontrol akses ke atribut tertentu. Python menggunakan konvensi dengan menambah awalan underscore pada atribut:

class RekeningBank:
def __init__(self, saldo):
self._saldo = saldo  # Atribut terperlindung
self.__rahasia = "shh"  # Atribut pribadi

def setor(self, jumlah):
self._saldo += jumlah

def get_saldo(self):
return self._saldo

rekening = RekeningBank(1000)
print(rekening._saldo)  # Output: 1000 (tetapi kita tidak seharusnya melakukan ini!)
print(rekening.__rahasia)  # Ini akan memunculkan AttributeError

Berikut adalah tabel yang ringkumkan metode yang telah kita pelajari:

Metode Deskripsi
__init__(self, ...) Metode konstruktor, dipanggil ketika membuat objek baru
__str__(self) Mengembalikan representasi string dari objek
__repr__(self) Mengembalikan representasi string detil dari objek
__len__(self) Mendefinisikan perilaku untuk fungsi built-in len()
__getitem__(self, key) Mendefinisikan perilaku untuk operasi pengindeksan
__setitem__(self, key, value) Mendefinisikan perilaku untuk menetapkan nilai ke nilai yang diindeksikan

Dan itu saja! Anda baru saja mengambil langkah pertama Anda ke dalam dunia Pemrograman Berorientasi Objek di Python. Ingat, praktek membuat perfect. Cobalah untuk membuat kelas dan objek Anda sendiri, dan segera Anda akan membangun program yang kompleks dan efisien seperti seorang profesional!

Credits: Image by storyset