# Nakafa Framework: LLM URL: /id/subject/university/bachelor/ai-ds/ai-programming/everything-object-python Source: https://raw.githubusercontent.com/nakafaai/nakafa.com/refs/heads/main/packages/contents/subject/university/bachelor/ai-ds/ai-programming/everything-object-python/id.mdx Output docs content for large language models. --- export const metadata = { title: "Semuanya adalah Objek di Python", description: "Temukan sifat object-oriented Python dengan contoh praktis. Jelajahi bagaimana angka, string, list, fungsi menjadi objek dengan method dan atribut.", authors: [{ name: "Nabil Akbarazzima Fatih" }], date: "07/26/2025", subject: "Pemrograman AI", }; ## Konsep Dasar Object-Oriented Programming Python adalah bahasa pemrograman yang menganut paradigma object-oriented programming atau OOP. Salah satu prinsip fundamental Python adalah bahwa semuanya adalah objek. Konsep ini mungkin terdengar abstrak di awal, tapi sebenarnya sangat natural dan mirip dengan cara kita melihat dunia nyata. Bayangkan dunia di sekitar kita. Semua benda memiliki karakteristik dan dapat melakukan sesuatu. Mobil memiliki warna, merek, dan kecepatan, serta dapat bergerak, berhenti, dan membunyikan klakson. Begitu juga di Python, setiap data dan fungsi adalah objek yang memiliki atribut dan dapat melakukan aksi tertentu. ## Perbandingan Paradigma Programming ### Bahasa Procedural Dalam bahasa pemrograman procedural, state dan action dipisahkan. Data dan fungsi yang mengoperasikan data tersebut terpisah satu sama lain. max <= ps->occ) { return -1; } ps->occ++; return 0; } void leave(struct ParkSystem* ps) { if (ps->occ > 0) { ps->occ--; } } int main() { struct ParkSystem ps = {100, 0}; occupy(&ps); printf("%d %d", ps.max, ps.occ); return 0; }` }]} /> Dalam pendekatan procedural, kamu melihat bahwa data (struct) dan fungsi terpisah. Fungsi menerima data sebagai parameter dan memodifikasinya dari luar. ### Bahasa Object-Oriented Dalam bahasa pemrograman object-oriented, state dan action digabung menjadi satu unit yang disebut class. Atribut menggambarkan state, sedangkan method menggambarkan action yang dapat dilakukan pada state tersebut. 0: self.occ -= 1 # Penggunaan ps = ParkSystem(100) ps.occupy() print(f"Max: {ps.max}, Occupied: {ps.occ}")` }]} /> Dalam pendekatan object-oriented, data dan fungsi yang mengoperasikan data tersebut dikemas dalam satu unit. Objek memiliki tanggung jawab untuk mengelola state-nya sendiri. ## Sistem Parkir sebagai Analogi Mari kita gunakan sistem parkir sebagai contoh untuk memahami konsep objek. Dalam dunia nyata, sistem parkir memiliki karakteristik seperti kapasitas maksimal dan jumlah tempat yang terisi. Sistem ini juga dapat melakukan aksi seperti menerima mobil masuk atau keluar. = self.capacity: return f"Parkir penuh! Tidak bisa parkir {vehicle_plate}" self.vehicles.append(vehicle_plate) self.occupied += 1 return f"Kendaraan {vehicle_plate} berhasil parkir" def exit_vehicle(self, vehicle_plate): """Method untuk keluar parkir""" if vehicle_plate in self.vehicles: self.vehicles.remove(vehicle_plate) self.occupied -= 1 return f"Kendaraan {vehicle_plate} keluar parkir" else: return f"Kendaraan {vehicle_plate} tidak ditemukan" def get_status(self): """Method untuk melihat status parkir""" available = self.capacity - self.occupied return { 'capacity': self.capacity, 'occupied': self.occupied, 'available': available, 'vehicles': self.vehicles } def is_full(self): """Method untuk mengecek apakah parkir penuh""" return self.occupied >= self.capacity # Contoh penggunaan parking = ParkingSystem(5) print(parking.park_vehicle("B 1234 CD")) print(parking.park_vehicle("B 5678 EF")) print(parking.get_status()) print(parking.is_full())` }]} /> ## Konsep Objek pada Tipe Data Di Python, konsep "semuanya adalah objek" berarti setiap data yang kamu buat memiliki atribut dan method. Mari kita eksplorasi konsep ini lebih dalam. ### Angka adalah Objek print(dir(result)) # Melihat semua method yang tersedia` }]} /> ### String adalah Objek ### List adalah Objek ### Dictionary adalah Objek = 80} print(passed) # Nested dictionary university = { "students": { "CS": ["Alice", "Bob"], "Math": ["Charlie", "Diana"] }, "location": "Jakarta" } print(university["students"]["CS"])` }]} /> ## Fungsi juga adalah Objek Salah satu hal yang menarik di Python adalah bahwa fungsi juga merupakan objek. Ini memungkinkan kamu untuk memperlakukan fungsi seperti data biasa. # Fungsi bisa disimpan dalam variable my_function = greet print(my_function("Alice")) # Hello, Alice! # Fungsi bisa disimpan dalam list functions = [greet, farewell] for func in functions: print(func("Bob")) # Fungsi bisa dijadikan parameter def call_function(func, name): return func(name) result = call_function(greet, "Charlie") print(result) # Fungsi bisa dikembalikan dari fungsi lain def get_greeting_function(language): def english_greet(name): return f"Hello, {name}!" def indonesian_greet(name): return f"Halo, {name}!" if language == "english": return english_greet else: return indonesian_greet # Menggunakan fungsi yang dikembalikan greet_func = get_greeting_function("indonesian") print(greet_func("Diana")) # Halo, Diana! # Lambda function juga objek square = lambda x: x ** 2 print(type(square)) # print(square(5)) # 25` }]} /> ## Class dan Instance sebagai Objek Class adalah blueprint untuk membuat objek, sedangkan instance adalah objek yang dibuat dari class tersebut. print(Student.__name__) # Student print(Student.university) # Universitas Indonesia` }]} /> ## Method Khusus Python memiliki method khusus yang dimulai dan diakhiri dengan double underscore. Method ini memungkinkan objek kamu berperilaku seperti built-in types. 0: self.balance += amount return self def __sub__(self, amount): """Mengurangi saldo (withdraw)""" if isinstance(amount, (int, float)) and amount > 0: if amount <= self.balance: self.balance -= amount else: print("Saldo tidak mencukupi!") return self def __bool__(self): """True jika ada saldo, False jika saldo 0""" return self.balance > 0 # Membuat objek account1 = BankAccount("Alice", 1000000) account2 = BankAccount("Bob", 500000) # Magic methods in action print(account1) # __str__ print(repr(account1)) # __repr__ print(len(account1)) # __len__ (panjang nama) # Comparison print(account1 == account2) # __eq__ print(account1 > account2) # __lt__ (terbalik) # Arithmetic operations account1 + 500000 # __add__ (deposit) print(account1) account1 - 200000 # __sub__ (withdraw) print(account1) # Boolean conversion empty_account = BankAccount("Charlie", 0) print(bool(account1)) # True print(bool(empty_account)) # False # Menggunakan dalam conditional if account1: print(f"{account1.owner} memiliki saldo") else: print(f"{account1.owner} tidak memiliki saldo")` }]} /> ## Praktik Object-Oriented Programming Mari kita buat contoh yang lebih kompleks untuk memahami bagaimana OOP diterapkan dalam skenario nyata. Dengan memahami konsep bahwa semuanya adalah objek di Python, kamu dapat menulis kode yang lebih terstruktur, mudah dipahami, dan mudah dipelihara. Object-oriented programming memungkinkan kamu untuk memodelkan masalah dunia nyata ke dalam kode dengan cara yang natural dan intuitif.