Menu
CoddyTech

Dekorator property

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 14 dari 64.

Decorator property memungkinkan kamu mengontrol cara atribut diakses dan diubah, sambil tetap menggunakan sintaks atribut yang sederhana.

Berikut contoh class dengan getter property:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age

Gunakan property seperti atribut biasa:

person = Person("Alice", 30)
print(person.age)

Output:

30

Perhatikan bahwa kamu mengakses age tanpa tanda kurung, meskipun sebenarnya kamu sedang memanggil sebuah method.

Tambahkan setter untuk memvalidasi data saat menetapkan nilai:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age
    
    @age.setter
    def age(self, value):
        if value < 0:
            raise ValueError("Age cannot be negative")
        self._age = value

Sekarang kamu bisa mengatur usia dengan validasi otomatis:

person = Person("Alice", 30)
person.age = 31     # Menggunakan setter dengan validasi
print(person.age)   # Menggunakan getter

# Ini akan memunculkan error:
# person.age = -5   # ValueError: Usia tidak boleh negatif

Output:

31

Buat property terhitung yang menghitung nilai:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    @property
    def area(self):
        return self.width * self.height

rect = Rectangle(5, 3)
print(rect.area)  # Menghitung 5 * 3 = 15

Output:

15

Poin penting: Dekorator property membuat method tampak seperti atribut. Gunakan @property untuk getter dan @attribute_name.setter untuk setter. Ini memungkinkan validasi data dan nilai hasil perhitungan sambil mempertahankan sintaks akses atribut yang sederhana.

challenge icon

Tantangan

Sedang

Lengkapi class Temperature di temperature.py yang mengonversi antara Celsius dan Fahrenheit. Kemudian gunakan class ini di driver.py untuk menguji konversi suhu. Ikuti komentar TODO di kedua file untuk petunjuk langkah demi langkah.

Cetak setiap konversi dengan format [celsius]°C is [fahrenheit]°F, dengan nilai Celsius persis seperti yang diberikan dan nilai Fahrenheit sesuai hasil perhitungan Python. Jangan membulatkan atau memformat angkanya. Dua baris yang dihasilkan driver adalah:

25°C is 77.0°F
37.0°C is 98.6°F

Coba sendiri

# TODO: Impor class Temperature dari module temperature

# Uji class:
# TODO: Buat instance suhu pada 25°C
temp = None  # Ganti dengan instance Temperature yang sebenarnya

# TODO: Cetak nilai Celsius dan Fahrenheit
# TODO: Gunakan format: "25°C is 77.0°F" (cetak kedua nilai apa adanya, tanpa pembulatan atau pemformatan)

# TODO: Atur suhu menjadi 98.6°F

# TODO: Cetak kedua nilai lagi untuk memastikan konversinya berfungsi
# TODO: Gunakan format yang sama seperti sebelumnya
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Python online