Dekorator property
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 10 dari 64.
Dekorator @property memungkinkan kamu mengakses method seperti atribut, sehingga memberi cara yang rapi untuk mendapatkan dan mengatur nilai. Ini berguna untuk enkapsulasi, karena kamu dapat menambahkan logika validasi atau nilai hasil perhitungan tanpa mengubah antarmuka publik class-mu.
Berikut contoh class yang menggunakan @property:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14159 * self._radius ** 2Perhatikan bahwa kita menggunakan self._radius untuk menyimpan nilai sebenarnya. Jika kita menggunakan self.radius di dalam getter, getter akan memanggil method getter lagi, sehingga terjadi rekursi tak terbatas.
Buat lingkaran dan akses propertinya:
my_circle = Circle(5)Akses property seperti atribut biasa:
print(my_circle.radius)
print(my_circle.area)Output:
5
78.53975Perhatikan bahwa kamu tidak menggunakan tanda kurung () saat mengakses property. Property terlihat seperti atribut, tetapi menjalankan kode method.
Tambahkan setter agar nilai bisa diubah dengan validasi:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
print("Radius must be positive!")Sekarang kamu dapat mengatur radius seperti atribut:
my_circle = Circle(5)
my_circle.radius = 10 # Menggunakan setter
print(my_circle.radius) # Menggunakan getterOutput:
10Poin utama: @property membuat method tampak seperti atribut, sedangkan @property_name.setter memungkinkan kamu mengontrol cara nilai ditetapkan, sehingga validasi data dan enkapsulasi dapat dilakukan.
Coba sendiri
Pelajaran ini tidak memiliki tantangan kode.
Pelajaran 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