Python - Kelas dan Objek

Hai yang berhasrat menjadi pemrogram Python! Hari ini, kita akan melakukan perjalanan yang menarik ke dalam dunia Pemrograman Berorientasi Objek (OOP) di Python. Buckle up, kerana kita akan mengubah cara anda berfikir tentang kode!

Python - Classes & Objects

Apakah itu Kelas di Python?

Bayangkan anda sedang membina sebuah zoo virtual. Anda tidak akan membuat setiap haiwan dari atas rak, kan? Itulah di mana kelas menjadi berguna!

Sebuah kelas di Python adalah seperti sebuah blueprint atau templat untuk membuat objek. Ia mendefinisikan satu set atribut dan metode yang objek dari kelas itu akan miliki.

Mari kita buat satu kelas yang simple untuk mewakili sebuah anjing:

class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed

def bark(self):
print(f"{self.name} says Woof!")

Dalam contoh ini, Dog adalah kelas kita. Ia memiliki atribut seperti name dan breed, serta satu metode yang dipanggil bark().

Membuat Kelas di Python

Membuat sebuah kelas adalah sama mudah seperti menggunakan kata kunci class diikuti dengan nama kelas. Mari kita buat satu kelas Car yang lebih detil:

class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer = 0

def drive(self, distance):
self.odometer += distance
print(f"Drove {distance} miles. Total: {self.odometer} miles")

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

Di sini, __init__ adalah satu metode khas yang dipanggil konstruktor. Ia dipanggil apabila kita membuat objek baru dari kelas ini.

Apakah itu Objek?

Jika kelas adalah sebuah blueprint, objek adalah "barang" sebenar yang dibuat dari blueprint itu. Ia adalah satu contoh khusus dari sebuah kelas.

Membuat Objek dari Kelas di Python

Membuat objek (juga dipanggil instantiation) adalah seperti menggunakan blueprint kita untuk membuat sesuatu yang sebenar. Mari kita buat beberapa kereta:

my_car = Car("Toyota", "Corolla", 2020)
your_car = Car("Honda", "Civic", 2019)

print(my_car.make)  # Output: Toyota
your_car.drive(50)  # Output: Drove 50 miles. Total: 50 miles
my_car.honk()  # Output: Beep beep!

Setiap kereta adalah objek yang berasingan dengan set atribut dan metode mereka sendiri.

Mengakses Atribut Objek di Python

Kita boleh mengakses atribut objek menggunakan notasi titik. Mari kita periksa kereta kita:

print(f"My car is a {my_car.year} {my_car.make} {my_car.model}")
# Output: My car is a 2020 Toyota Corolla

Atribut Kelas Dalam-Buat di Python

Kelas Python datang dengan beberapa atribut dalam-buat. Mari kita eksplor mereka:

class MyClass:
x = 5

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

Kelas Dalam-Buat bagi Tipe Data Python

Adakah anda tahu bahawa walaupun tipe data dasar Python adalah objek? Mari kita periksa:

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

Segalanya di Python adalah sebuah objek!

Pengumpulan Kitar (Menghancurkan Objek) di Python

Di Python, kita tidak perlu secara manual menghancurkan objek. Pengumpul kitar Python secara automatik menguruskan mereka apabila objek tidak lagi digunakan.

import gc

# Create an object
my_car = Car("Toyota", "Corolla", 2020)

# Remove the reference
my_car = None

# Force garbage collection (usually not necessary)
gc.collect()

Penyembunyian Data di Python

Dalam OOP, kita sering ingin mengawal akses kepada beberapa atribut. Python menggunakan konvensi untuk menandai atribut dengan garis bawah:

class BankAccount:
def __init__(self, balance):
self._balance = balance  # Atribut terlindung
self.__secret = "shh"  # Atribut rahsia

def deposit(self, amount):
self._balance += amount

def get_balance(self):
return self._balance

account = BankAccount(1000)
print(account._balance)  # Output: 1000 (tetapi kita tidak sepatutnya melakukan ini!)
print(account.__secret)  # Ini akan memunculkan AttributeError

Berikut adalah jadual yang mengsumingiklan metode yang kita telah cuba:

Metode Keterangan
__init__(self, ...) Metode konstruktor, dipanggil apabila membuat objek baru
__str__(self) Kembali kepada representasi string dari objek
__repr__(self) Kembali kepada representasi string yang detil dari objek
__len__(self) Mendefinisikan tingkah laku bagi fungsi len() yang dalam-buat
__getitem__(self, key) Mendefinisikan tingkah laku bagi operasi pengindeksan
__setitem__(self, key, value) Mendefinisikan tingkah laku bagi pengisytiharan nilai kepada nilai yang diindeks

Dan itu adalah! Anda baru saja membuat langkah pertama anda ke dalam dunia Pemrograman Berorientasi Objek di Python. Ingat, latihan membuatkan perfect. Cobalah untuk membuat kelas dan objek anda sendiri, dan tidak lama lagi anda akan membina program yang kompleks dan efisien seperti profesional!

Credits: Image by storyset