Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Python: Objek dan Berkas

Pelajaran 7 dari 16

Pewarisan, dataclass, dan properti

Properti, dan kapan tidak perlu kelas

Setelah pelajaran ini kamu bisa membuat atribut terhitung dan atribut bervalidasi dengan @property, serta mengenali kebutuhan yang cukup ditangani fungsi biasa.

±13 menitDiperiksa 5 Okt 2026

Materi

Dekorator @property mengubah method menjadi atribut yang dibaca tanpa tanda kurung: r.luas, bukan r.luas(). Bentuk ini cocok untuk nilai yang dihitung dari atribut lain, seperti luas dari panjang dan lebar, karena nilainya selalu mengikuti atribut asalnya dan tidak pernah basi. Properti tanpa pasangan setter hanya bisa dibaca.

class Ruang:
    def __init__(self, panjang, lebar, sewa_per_m2):
        self.panjang = panjang
        self.lebar = lebar
        self.sewa_per_m2 = sewa_per_m2

    @property
    def luas(self):
        return self.panjang * self.lebar

    @property
    def sewa_per_m2(self):
        return self._sewa

    @sewa_per_m2.setter
    def sewa_per_m2(self, nilai):
        if nilai <= 0:
            raise ValueError("sewa harus lebih dari nol")
        self._sewa = nilai

r = Ruang(6, 4, 125000)
print(r.luas)           # 24
r.lebar = 5
print(r.luas)           # 30

Pasangan @nama.setter dijalankan setiap kali atribut itu diberi nilai, termasuk dari dalam __init__. Setter dipakai untuk menolak nilai yang tidak masuk akal dengan raise ValueError(...). Nilai aslinya disimpan di atribut lain berawalan garis bawah, misalnya self._sewa; tutorial Python §9.6 menyebut garis bawah sebagai penanda bahwa atribut itu bagian dalam kelas.

Kapan tidak perlu kelas: tutorial Python menyebut kelas sebagai cara menyatukan data dengan fungsinya. Bila tidak ada data yang perlu diingat di antara pemanggilan — misalnya hanya menghitung ongkir dari berat — fungsi biasa sudah cukup, dan kelas berisi __init__ ditambah satu method yang dipanggil sekali hanya menambah baris. Bila datanya hanya disimpan tanpa aturan, dataclass sudah cukup.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Empat kebutuhan berikut akan ditulis dalam Python. Mana yang cukup ditulis sebagai fungsi biasa, karena tidak ada data yang perlu diingat di antara pemanggilan?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke