Menu
CoddyTech

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 ** 2

Perhatikan 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.53975

Perhatikan 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 getter

Output:

10

Poin 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.

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