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._ageGunakan property seperti atribut biasa:
person = Person("Alice", 30)
print(person.age)Output:
30Perhatikan 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 = valueSekarang 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 negatifOutput:
31Buat 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 = 15Output:
15Poin 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.
Tantangan
SedangLengkapi 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°FCoba 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 sebelumnyaPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass vs objectParameter selfmethodAtributMethod Konstruktor (__init__)Rangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan DasarFungsi super()Penimpaan MethodPewarisan BergandaUrutan Resolusi MethodRingkasan: Hierarki Karyawan5Polimorfisme
Meninjau Ulang Method OverridingDuck Typingclass dan method AbstrakDesain InterfaceRingkasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanMixinsMetode Statis dan Metode ClassDecorator ClassPengelola Konteks11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Property class
Variabel instance vs variabel classDekorator propertyAtribut privatRangkuman: Pengelola Rekening Bank6Enkapsulasi
Anggota Public, Protected, PrivateModifier AksesPenyembunyian InformasiDecorator Property Tingkat LanjutUlasan: Sistem Catatan Siswa12Proyek: Manajemen Perpustakaan
Ikhtisar Proyekclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminPengujian dan IntegrasiLatihan sendiri: Compiler Python online