Kelas dan Objek Python: Tutorial OOP Dengan Contoh Nyata

  1. Beranda
  2. Blog
  3. Pengembangan Perangkat Lunak

Pengembangan Perangkat Lunak

Kelas dan Objek Python: Tutorial OOP Dengan Contoh Nyata

Pelajari Python berorientasi objek dengan membangun sesuatu yang nyata. Buat kelas, pahami self dan __init__, bagikan perilaku dengan warisan, lindungi data dengan properti, dan ketahui kapan kelas merupakan alat yang salah.

10 menit baca
Kelas dan objek Python: Tutorial OOP dengan contoh nyata

Poin penting

  • kelas adalah cetak biru, dan objek adalah sesuatu yang dibangun darinya.
  • __init__ menyiapkan setiap objek baru, dan self merujuk ke objek itu.
  • Atribut yang ditetapkan di kelas dibagikan. Atribut yang disetel pada self milik satu objek.
  • Gunakan @dataclass untuk kelas penyimpanan data, dan pilih fungsi sederhana ketika tidak ada status yang harus dipertahankan.

Seiring berkembangnya skrip, Anda akhirnya meneruskan kelompok variabel yang sama antar fungsi, dan menjadi sulit untuk membedakan data mana yang termasuk dalam logika mana. Kelas dan objek Python menyelesaikan masalah ini dengan menggabungkan data dan perilaku ke dalam satu unit.

Dalam tutorial ini kita membuat rekening bank kecil selangkah demi selangkah, dan menambahkan setiap ide OOP hanya jika ide tersebut memecahkan masalah. Kami menjalankan setiap contoh di Python 3.13, dan output yang ditampilkan berasal dari proses tersebut. Jika Anda baru mengenal bahasa ini, baca tutorial Python untuk pemula kami terlebih dahulu.

Apa itu kelas dan objek?

Sebuah kelas menjelaskan apa itu sesuatu dan apa yang dapat dilakukannya. Sebuah objek, juga disebut sebuah instance, adalah objek spesifik yang dibuat dari deskripsi tersebut. “Akun” adalah sebuah kelas, sedangkan akun Asha dan akun Ben adalah dua objek.

Istilah Artinya Contoh
Kelas Cetak birunya Akun
Objek atau contoh Satu hal yang dibuat darinya a = Akun("Asha")
Atribut Data pada objek a.balance
Metode Sebuah fungsi di kelas a.deposit(50)

Anda telah menggunakan objek selama ini. Dalam Python, string, daftar, dan bahkan fungsi adalah objek, itulah sebabnya Anda dapat menulis "hello".upper().

Kelas pertamamu

class Account:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance

    def deposit(self, amount):
        if amount <= 0:
            raise ValueError("amount must be positive")
        self.balance += amount
        return self.balance

a = Account("Asha", 100)
b = Account("Ben")

a.deposit(50)
print(a.balance, b.balance)

# 150 0

__init__ berjalan secara otomatis setiap kali Anda membuat objek, dan ini menetapkan status awal. Menyetorkan ke a tidak menyentuh b, karena setiap objek memiliki datanya masing-masing. Perhatikan bahwa metode ini juga melindungi saldo dari nilai buruk. Panduan kami untuk penanganan pengecualian Python menjelaskan raise secara lebih mendalam.

Apa itu diri?

self hanyalah objek yang sedang dikerjakan suatu metode. Saat Anda menulis a.deposit(50), Python secara efektif memanggil Account.deposit(a, 50), meneruskan objek sebagai argumen pertama. Begitulah cara satu definisi metode dapat melayani setiap objek.

Nama self lebih merupakan konvensi yang kuat daripada kata kunci, tetapi selalu gunakan itu. Melupakannya dalam definisi metode adalah kesalahan pemula yang paling umum, dan menghasilkan pesan yang membingungkan tentang jumlah argumen.

Atribut kelas vs atribut instan

Atribut yang ditetapkan secara langsung di badan kelas digunakan bersama oleh semua objek. Satu set pada self hanya dimiliki oleh objek tersebut. Contoh ini menunjukkan bagaimana perilaku pencarian:

class Account:
    interest_rate = 0.04    # class attribute

    def __init__(self, owner, balance=0):
        self.owner = owner  # instance attribute
        self.balance = balance

a = Account("Asha", 100)
b = Account("Ben")
print(a.interest_rate, b.interest_rate)   # 0.04 0.04

Account.interest_rate = 0.05
print(a.interest_rate, b.interest_rate)   # 0.05 0.05

a.interest_rate = 0.09
print(a.interest_rate, b.interest_rate, Account.interest_rate)
# 0.09 0.05 0.05

Kalimat terakhir itu mengejutkan banyak orang. Menugaskan melalui a tidak mengubah nilai bersama. Itu menciptakan atribut instance baru pada a yang menyembunyikan kelas satu. Python melihat objeknya terlebih dahulu, lalu kelasnya.

Metode khusus (dunder).

Metode dengan garis bawah ganda memungkinkan objek Anda bekerja dengan fitur bawaan Python. Tanpa mereka, pencetakan akun menunjukkan alamat memori yang tidak berguna. Menambahkan dua memberinya bentuk yang dapat dibaca:

    def __str__(self):
        return f"{self.owner}: {self.balance}"

    def __repr__(self):
        return f"Account({self.owner!r}, {self.balance})"

print(a)        # Asha: 150
print([a, b])   # [Account('Asha', 150), Account('Ben', 0)]
Metode Dipicu oleh
__init__ Membuat sebuah objek
__str__ print(obj), str(obj)
__repr__ Men-debug, atau menampilkannya dalam daftar
__eq__ Sebuah == b
__len__ len(obj)
__add__ a + b

Warisan

Warisan memungkinkan kelas baru menggunakan kembali kelas yang sudah ada dan hanya mengubah yang berbeda. Di sini, Savings adalah Account dengan pengaturan tambahan:

class Savings(Account):
    def __init__(self, owner, balance=0, limit=3):
        super().__init__(owner, balance)
        self.limit = limit

    def __str__(self):
        return f"{super().__str__()} (savings)"

s = Savings("Chitra", 500)
s.deposit(100)
print(s, isinstance(s, Account), s.limit)

# Chitra: 600 (savings) True 3

super() memanggil versi induk, sehingga logika pengaturan tidak terulang. deposit diwarisi sebagaimana adanya, dan __str__ diganti untuk menambahkan label. Hanya gunakan warisan untuk hubungan “adalah” yang nyata. Jika suatu kelas hanya membutuhkan sesuatu, seperti mobil yang membutuhkan mesin, berikan objek tersebut sebagai atribut. Ini dikenal sebagai komposisi, dan biasanya lebih fleksibel dibandingkan rantai pewarisan dalam.

Polimorfisme

Polimorfisme berarti objek yang berbeda dapat merespons pemanggilan metode yang sama dengan caranya sendiri. Kode panggilan tidak perlu mengetahui jenis pastinya:

class Square:
    def __init__(self, side):
        self.side = side
    def area(self):
        return self.side ** 2

class Circle:
    def __init__(self, radius):
        self.radius = radius
    def area(self):
        return round(3.14159 * self.radius ** 2, 2)

for shape in [Square(3), Circle(2)]:
    print(type(shape).__name__, shape.area())

# Square 9
# Circle 12.57

Kedua kelas ini bahkan tidak memiliki orang tua yang sama. Python hanya peduli bahwa objek tersebut memiliki metode area, sebuah pendekatan yang dikenal sebagai pengetikan bebek. Menambahkan Triangle nanti tidak memerlukan perubahan pada loop.

Enkapsulasi dan properti

Python tidak memiliki atribut yang benar-benar privat, dan ia bergantung pada konvensi. Satu garis bawah, seperti pada_price, memberitahu pengembang lain “ini internal, tolong jangan sentuh”. Untuk memeriksa nilai ketika ditetapkan, gunakan aproperti, yang terlihat seperti atribut biasa dari luar:

class Product:
    def __init__(self, price):
        self.price = price

    @property
    def price(self):
        return self._price

    @price.setter
    def price(self, value):
        if value < 0:
            raise ValueError("price cannot be negative")
        self._price = value

p = Product(100)
p.price = 150
print(p.price)      # 150
p.price = -5        # ValueError: price cannot be negative

Ini berarti Anda dapat memulai dengan atribut biasa dan menambahkan validasi nanti tanpa mengubah kode apa pun yang menggunakan kelas tersebut. Jadi jangan menulis metode get_price() dan set_price() karena kebiasaan, seperti yang mungkin Anda lakukan di Java. Sintaks @ di sini adalah dekorator, yang kami jelaskan di penjelasan dekorator Python.

Metode kelas dan metode statis

class Temperature:
    def __init__(self, celsius):
        self.celsius = celsius

    @classmethod
    def from_fahrenheit(cls, f):
        return cls(round((f - 32) * 5 / 9, 1))

    @staticmethod
    def is_freezing(celsius):
        return celsius <= 0

Temperature.from_fahrenheit(212).celsius   # 100.0
Temperature.is_freezing(-3)                # True
Ketik Argumen pertama Gunakan untuk
Metode contoh diri Bekerja dengan data satu objek
@classmethod kl Konstruktor alternatif
@staticmethod Tidak ada Pembantu yang berhubungan dengan kelas

Kelas data

Ketika sebagian besar kelas menyimpan data, menulis __init__, __repr__ dan __eq__ dengan tangan akan membosankan. @dataclass menghasilkannya dari anotasi tipe:

from dataclasses import dataclass, field

@dataclass
class Item:
    name: str
    price: int
    tags: list = field(default_factory=list)

print(Item("Pen", 10))
print(Item("Pen", 10) == Item("Pen", 10))

# Item(name='Pen', price=10, tags=[])
# True

Tips: Tidak semuanya membutuhkan kelas. Jika tidak mempunyai keadaan dan hanya satu perilaku, fungsi biasa akan lebih sederhana. Untuk pencarian sederhana, kamus mungkin cukup. Jangkau kelas ketika data dan aturan yang melindunginya jelas saling terkait.

Kesalahan umum

Menggunakan atribut kelas yang bisa berubah

Ini adalah bug klasik. Daftar ini ditentukan di kelas, sehingga semua kereta membagikannya:

class Cart:
    items = []            # shared by every cart!

    def add(self, item):
        self.items.append(item)

c1, c2 = Cart(), Cart()
c1.add("pen")
print(c2.items)

# ['pen']

Buat di __init__ dengan self.items = [], sehingga setiap objek mendapatkan daftarnya sendiri.

Kesalahan umum lainnya

  • Lupa self. Tulis self.balance, bukan balance, di dalam metode.
  • Lupa super().__init__(). Anak kemudian melewatkan atribut yang disiapkan oleh induk.
  • Membangun kelas yang besar. Kelas yang melakukan segalanya sulit untuk diuji. Bagilah berdasarkan tanggung jawab.
  • Warisan mendalam. Dua level biasanya banyak, dan komposisinya sering kali lebih jelas.
  • Tidak menulis tes. Kelas dengan aturan mudah untuk diuji, seperti yang tutorial pytest kami tunjukkan menggunakan kereta kecil.

Penutup

Python berorientasi objek mengelompokkan data dengan perilaku yang melindunginya. Mulailah dengan __init__, metode, dan __str__, lalu tambahkan warisan dan properti saat Anda menemukan masalah yang dipecahkannya. Sebagai langkah selanjutnya, ambil skrip yang meneruskan beberapa variabel yang sama ke mana saja dan ubah menjadi satu kelas kecil.

Pertanyaan yang sering diajukan

Apa perbedaan antara kelas dan objek?

Kelas adalah definisi, atau cetak biru. Objek adalah contoh spesifik yang dibuat darinya, dengan datanya sendiri. Satu kelas dapat membuat banyak objek.

Apa yang dilakukan __init__ dengan Python?

Ini adalah penginisialisasi, yang berjalan secara otomatis saat Anda membuat objek. Biasanya menetapkan atribut awal objek dari argumen yang Anda sampaikan.

Apa itu diri dengan Python?

self merujuk ke objek tempat metode dipanggil. Python meneruskannya secara otomatis, dan memungkinkan metode membaca dan mengubah atribut objek tersebut.

Apa saja empat pilar OOP?

Mereka adalah enkapsulasi, abstraksi, pewarisan dan polimorfisme. Bersama-sama, keduanya membantu Anda menggabungkan data dengan perilaku, menyembunyikan detail, dan menggunakan kembali kode.

Kapan saya harus menggunakan kelas alih-alih fungsi?

Gunakan kelas ketika data dan perilaku menjadi satu di beberapa operasi. Untuk satu operasi tanpa kewarganegaraan, fungsi biasa lebih sederhana dan mudah untuk diuji.

Teruslah belajar

Bekerja dengan Stack Quora

Butuh bantuan dengan pengujian, WordPress atau SEO?

Kami membantu tim mengirimkan perangkat lunak yang lebih baik dan mengembangkan situs mereka. Beritahu kami apa yang sedang Anda kerjakan dan kami akan menyarankan langkah selanjutnya yang jelas.

Teruslah membaca

Panduan lebih lanjut tentang pengujian, AI & pengembangan modern

Menikmati artikel ini? Pilih topik dan langsung masuk ke tutorial terbaru kami.

Kecerdasan buatan

Penjelasan Halusinasi AI: Mengapa Model Bahasa Memperbaiki Masalah dan Cara Menguranginya

Halusinasi AI menjelaskan: apa itu, mengapa model bahasa memproduksinya, tipe umum, cara menguranginya dengan landasan dan petunjuk, dan pemeriksaan…

Baca artikel →
DevOps

Penjelasan Variabel Lingkungan: File .env, Rahasia, dan Konfigurasi Dilakukan dengan Benar

Variabel lingkungan dijelaskan dengan contoh Python yang kami jalankan: membaca dan mengaturnya, mengapa setiap nilai berupa string, file .env, pewa…

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Pembatasan Kecepatan API: Algoritma, Header, dan Penanganan 429 Kesalahan

Pembatasan laju API dijelaskan dengan simulasi yang kami jalankan: keranjang token, jendela tetap, jendela geser, respons 429, header batas laju, pe…

Baca artikel →
Otomatisasi pengujian

Mengejek dengan Python: unittest.mock, patch dan Kesalahan yang Membuat Tes Berbohong

Mengejek dengan Python dengan unittest.mock, menguji: Mock dan return_value, side_effect, menambal di mana nama digunakan, spesifikasi dan autospec,…

Baca artikel →
Pengujian perangkat lunak

Penjelasan Cakupan Kode: Cakupan Jalur vs Cabang dan Apa Arti 100% Sebenarnya

Cakupan kode dijelaskan dengan coverage.py yang sebenarnya dijalankan: cakupan garis, cabang dan kondisi, membaca laporan, mengapa cakupan 100% masi…

Baca artikel →
Basis data & SQL

DELETE vs TRUNCATE vs DROP dalam SQL: Perbedaan, Rollback dan Kapan Menggunakan Masing-Masing

DELETE vs TRUNCATE vs DROP dijelaskan dengan SQL yang diuji: apa yang dihapus, rollback, pemicu, reset identitas, kecepatan, dan perbedaan PostgreSQ…

Baca artikel →
Basis data & SQL

Penjelasan Tampilan SQL: Membuat, Menggunakan, dan Menghindari Kesalahan, Dengan Contoh

Tampilan SQL dijelaskan dengan kueri yang kami jalankan: membuat tampilan, hasil langsung, menyembunyikan kolom, kinerja, tampilan yang dapat diperb…

Baca artikel →
Pengembangan perangkat lunak

Antarmuka TypeScript vs Tipe: Perbedaan Nyata, Diuji Dengan Kompiler

Antarmuka TypeScript vs tipe, diperiksa dengan kompiler sebenarnya: apa yang bisa dilakukan keduanya, apa yang hanya bisa dilakukan satu orang, peng…

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Python *args dan **kwargs: Fungsi Fleksibel Dengan Contoh Jelas

Python *args dan **kwargs dijelaskan dengan kode yang kami jalankan: pengepakan dan pembongkaran, urutan parameter, argumen hanya kata kunci dan pos…

Baca artikel →
Pengembangan perangkat lunak

Fungsi Python Lambda: Sintaks, Kegunaan Sebenarnya, dan Kapan Tidak Digunakan

Fungsi python lambda dijelaskan dengan kode yang kami jalankan: sintaksis, pengurutan dengan kunci, peta dan filter, penutupan, jebakan pengikatan a…

Baca artikel →
Kecerdasan buatan

Apa Itu Agen AI? Cara Kerjanya, Dengan Agent Loop Sederhana yang Dapat Anda Jalankan

Apa itu agen AI? Panduan sederhana tentang loop agen, alat, memori, dan pagar pembatas, dengan loop Python kecil yang kami jalankan, risiko nyata da…

Baca artikel →
DevOps

Pemantauan vs Observabilitas: Perbedaan Nyata, Dengan Log, Metrik, dan Jejak

Penjelasan pemantauan vs observabilitas: kegagalan yang diketahui dan tidak diketahui, log, metrik dan jejak, penelusuran insiden checkout, sinyal e…

Baca artikel →
DevOps

Volume Docker vs Bind Mounts: Pertahankan Data Kontainer dengan Cara yang Benar

Volume Docker vs pengikatan pengikat dijelaskan: mengapa data kontainer menghilang, volume yang diberi nama, pengikatan pengikatan, tmpfs, contoh Tu…

Baca artikel →
Otomatisasi pengujian

TDD vs BDD: Perbedaan Utama, Satu Fitur Dibangun dengan Dua Cara dan Kapan Menggunakan Masing-masing

TDD vs BDD dijelaskan dengan satu fitur diskon yang dibuat dengan dua cara: refactor merah-hijau dengan kode yang kami jalankan, skenario Mengingat-…

Baca artikel →
Pengujian perangkat lunak

User Acceptance Testing (UAT): Proses, Checklist dan Contoh Nyata

Pengujian penerimaan pengguna menjelaskan: siapa yang menjalankannya, perbedaannya dengan QA, proses tujuh langkah, templat kasus uji UAT, daftar pe…

Baca artikel →
Basis data & SQL

Penjelasan Nilai NULL SQL: IS NULL, COALESCE, NULLIF dan Jebakan yang Harus Dihindari

Nilai SQL NULL dijelaskan dengan kueri yang kami jalankan: logika tiga nilai, IS NULL, COALESCE, NULLIF, cara agregat, penggabungan, dan pengurutan …

Baca artikel →
Basis data & SQL

Pernyataan SQL CASE WHEN: Sintaks, Contoh Nyata dan Kesalahan Umum

SQL CASE KETIKA dijelaskan dengan kueri yang kami jalankan: formulir sederhana dan dicari, urutan kondisi, pivot dengan SUM, trik COUNT, pengurutan …

Baca artikel →
Pengembangan perangkat lunak

Apa itu JWT? Token Web JSON Dijelaskan Dengan Contoh Kerja

Apa itu JWT? JSON Web Tokens menjelaskan: tiga bagian, token yang dibuat dan dirusak dalam kode yang kami jalankan, sesi JWT vs, penyimpanan, token …

Baca artikel →
Pengembangan perangkat lunak

Penjelasan Loop Acara JavaScript: Call Stack, Microtasks, dan Timer Dengan Contoh

Perulangan peristiwa JavaScript dijelaskan dengan kode yang kami jalankan: tumpukan panggilan, antrian tugas dan tugas mikro, mengapa setTimeout 0 t…

Baca artikel →
Pengembangan perangkat lunak

Generator Python dan Penjelasan Hasil: Menghemat Memori Dengan Contoh Nyata

Generator dan hasil Python dijelaskan dengan kode yang kami jalankan: bagaimana mereka menjeda dan melanjutkan, mengukur penghematan memori, saluran…

Baca artikel →
Kecerdasan buatan

Apa itu Embedding? Kesamaan Vektor dan Kosinus Dijelaskan Secara Sederhana

Apa itu embeddings? Panduan bahasa sederhana tentang vektor, kesamaan kosinus, dan penelusuran semantik, dengan contoh kecil yang kami jalankan, pen…

Baca artikel →
DevOps

Penerapan Biru-Hijau vs Canary: Perbedaan, Kompromi, dan Cara Memilih

Penjelasan penerapan blue-green vs canary: cara kerja masing-masing, biaya, risiko dan rollback, pengelompokan pengguna stabil yang kami uji, migras…

Baca artikel →
Otomatisasi pengujian

Tes Tidak Stabil: Apa Penyebabnya dan Cara Memperbaikinya untuk Kebaikan

Pengujian yang tidak stabil dijelaskan dengan demo yang kami jalankan: penyebab utama, cara mengonfirmasi dan mendiagnosisnya, perbaikan waktu yang …

Baca artikel →
Pengujian perangkat lunak

Load Testing vs Stress Testing: Perbedaan, Metrik dan Contoh k6

Penjelasan pengujian beban vs pengujian stres: apa yang dibuktikan masing-masing, pengujian lonjakan dan rendam, metrik yang penting, mengapa rata-r…

Baca artikel →
Pengujian perangkat lunak

Kasus Uji vs Skenario Uji: Perbedaan Utama, Contoh, dan Kapan Menggunakan Masing-masing

Penjelasan kasus uji vs skenario pengujian: definisi yang jelas, tabel berdampingan, satu fitur pengaturan ulang kata sandi yang diambil dari skenar…

Baca artikel →
Basis data & SQL

Optimasi Kueri SQL: Baca Rencana Eksekusi dan Perbaiki Kueri Lambat, Dengan Pengaturan Waktu

Pengoptimalan kueri SQL diuji pada sejuta baris: membaca rencana eksekusi, menambahkan indeks yang tepat, memperbaiki filter yang tidak dapat disarg…

Baca artikel →
Basis data & SQL

SQL UNION vs UNION ALL: Perbedaan, Contoh dan Kinerja Diuji

SQL UNION vs UNION ALL dijelaskan dengan kueri yang kami jalankan: duplikat, aturan yang diikuti keduanya, bug data nyata, kinerja terukur, INTERSEC…

Baca artikel →
Pengembangan perangkat lunak

Tutorial API Pengambilan JavaScript: GET, POST, Penanganan Kesalahan, dan Batas Waktu

Tutorial JavaScript Fetch API diuji pada server lokal: GET dan POST, mengapa 404 tidak muncul, bantuan yang dapat digunakan kembali, string kueri, b…

Baca artikel →
Pengembangan perangkat lunak

Penanganan File Python: Baca, Tulis, CSV, JSON dan pathlib Dengan Contoh

Penanganan file Python dijelaskan dengan kode yang kami jalankan: mode terbuka, dengan, membaca file besar, CSV, JSON, pathlib, file biner, penulisa…

Baca artikel →
Pengembangan perangkat lunak

Kelas dan Objek Python: Tutorial OOP Dengan Contoh Nyata

Kelas dan objek Python dijelaskan dengan kode yang kami jalankan: __init__, metode, atribut kelas vs instance, warisan, properti, metode dunder, kel…

Baca artikel →
Kecerdasan buatan

Apa Itu Model Bahasa Besar? Bagaimana LLM Bekerja, Dijelaskan Tanpa Hype

Apa yang dimaksud dengan model bahasa besar? LLM dijelaskan dalam bahasa sederhana: token, penyematan, perhatian, pelatihan, jendela suhu dan kontek…

Baca artikel →
DevOps

Perintah Linux untuk Pemula: Panduan Terminal Penting Dengan Contoh

Perintah Linux untuk pemula, dikelompokkan berdasarkan tugas: navigasi, file, melihat log, grep, pipa, izin, proses dan arsip, dengan contoh analisi…

Baca artikel →
Otomatisasi pengujian

Selenium vs Penulis Drama: Perbedaan Utama, Perbandingan Kode, dan Mana yang Harus Dipilih

Selenium vs Playwright dibandingkan: arsitektur, menunggu, dukungan browser dan bahasa, debugging, pengujian yang sama di kedua alat, saran migrasi …

Baca artikel →
Pengujian perangkat lunak

Partisi Ekivalensi: Teknik Desain Tes Dijelaskan Dengan Contoh yang Dikerjakan

Penjelasan partisi ekivalensi: cara menemukan partisi yang valid dan tidak valid, contoh yang berfungsi untuk usia, kata sandi dan kupon, pengujian …

Baca artikel →
Pengujian perangkat lunak

Severity vs Priority dalam Pengujian Perangkat Lunak: Perbedaan, Matriks dan Contoh Nyata

Keparahan vs prioritas dalam pengujian perangkat lunak dijelaskan: definisi yang jelas, matriks empat arah dengan contoh, skala level, siapa yang me…

Baca artikel →
Basis data & SQL

Tutorial Subkueri SQL: Jenis, Subkueri yang Berkorelasi, dan ADA Dengan Contoh

Tutorial subkueri SQL dengan kueri yang kami jalankan: subkueri skalar, IN, FROM dan SELECT, subkueri yang berkorelasi, EXISTS, jebakan NOT IN NULL …

Baca artikel →
Basis data & SQL

Penjelasan Transaksi SQL dan ACID: COMMIT, ROLLBACK dan Tingkat Isolasi

Transaksi SQL dan ACID dijelaskan dengan transfer bank yang kami jalankan: COMMIT, ROLLBACK, savepoint, kunci, tingkat isolasi, pembacaan kotor, keb…

Baca artikel →
Pengembangan perangkat lunak

Git merge vs rebase: perbedaan, contoh, dan kapan memakai masing-masing

Git merge vs rebase dijelaskan dengan keluaran log nyata, tabel perbandingan, aturan emas rebase, dan alur kerja tim yang aman.

Baca artikel →
Pengembangan perangkat lunak

List Comprehension Python: Sintaks, Contoh, dan Kapan Harus Dihindari

List comprehension Python dijelaskan: sintaks, filter, if-else, perulangan bersarang, waktu yang diukur, dan kapan perulangan for biasa lebih baik.

Baca artikel →
Basis data & SQL

Penjelasan SQL JOIN dengan Contoh (Inner, Left, Right, Full)

Pahami SQL JOIN langkah demi langkah dengan tabel dan query contoh: INNER, LEFT, RIGHT, FULL, CROSS, dan SELF, plus kesalahan umum dan tips performa.

Baca artikel →