Class & Object — Python

Class & Object di Python Python mendukung Object-Oriented Programming (OOP). Class adalah blueprint, object adalah instance dari class. Membuat Class class Maha

Class & Object di Python

Python mendukung Object-Oriented Programming (OOP). Class adalah blueprint, object adalah instance dari class.

Membuat Class

class Mahasiswa:
    def __init__(self, nama, nim):
        self.nama = nama
        self.nim = nim
        self.nilai = []

    def tambah_nilai(self, nilai):
        self.nilai.append(nilai)

    def rata_rata(self):
        if len(self.nilai) == 0:
            return 0
        return sum(self.nilai) / len(self.nilai)

    def __str__(self):
        return f"{self.nama} ({self.nim})"

Menggunakan Class

mhs = Mahasiswa("Budi", "123456")
mhs.tambah_nilai(85)
mhs.tambah_nilai(90)
print(mhs)            # Budi (123456)
print(mhs.rata_rata())  # 87.5

self

self merujuk ke instance saat ini (mirip this di JavaScript). Selalu jadi parameter pertama di method.

Dunder Methods (Magic Methods)

Dunder = double underscore. Method yang diapit __ seperti __init__ dipanggil otomatis oleh Python pada situasi tertentu (bikin objek, bandingkan, print, dll.). Dengan meng-override dunder, class kamu bisa berperilaku seperti tipe bawaan Python.

__init__ — Constructor

Sudah kita pakai di atas. Dipanggil otomatis saat Kelas(...).

__str__ vs __repr__

__eq__ — Equality (==)

Tanpa __eq__, dua objek dianggap sama hanya jika identitasnya sama (memory address). Override untuk perbandingan berdasarkan nilai.

__len__ — Mendukung len()

Bikin class bisa dipakai dengan fungsi bawaan len().

__add__ — Operator +

Override + agar objek bisa dijumlahkan.

Contoh Lengkap: Vector Class

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"({self.x}, {self.y})"           # untuk user

    def __repr__(self):
        return f"Vector({self.x}, {self.y})"     # untuk debug

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)

    def __len__(self):
        # panjang "simbolik" — jumlah komponen
        return 2

v1 = Vector(1, 2)
v2 = Vector(3, 4)

print(v1)              # (1, 2)           ← __str__
print(repr(v1))        # Vector(1, 2)     ← __repr__
print(v1 + v2)         # (4, 6)           ← __add__
print(v1 == Vector(1, 2))  # True          ← __eq__
print(len(v1))         # 2                ← __len__

Dunder lain yang sering berguna: __lt__/__gt__ (comparison), __hash__ (agar bisa jadi key dict), __iter__ (iterable), __contains__ (operator in), __getitem__ (akses obj[i]).

Yang akan kamu pelajari