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!
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