Property menyediakan sebuah cara untuk mengkustomisasi akses pada atribut-atribut instance. Property dibuat dengan meletakkan dekorator property di atas sebuah method, dimana berarti ketika atribut instance dengan nama yang sama seperti method yang diakses, method akan dipanggil. Salah satu penggunaan umum sebuah property adalah untuk membuat sebuah atribut read-only.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@property
def pineapple_allowed(self):
return False
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
=====>
False
Traceback (most recent call last):
File "a.py", line 11, in <module>
pizza.pineapple_allowed = True
AttributeError: can't set attribute
=====>
Property dapat juga di-set dengan mendefinisikan fungsi-fungsi setter/getter. Fungsi setter mengatur nilai properti yang berhubungan. Getter untuk mendapatkan nilai.
Untuk mendefinisikan sebuah setter, kita perlu untuk menggunakan dekorator dengan nama yang sama dengan properti, diikuti sebuah titik dan kata kunci setter.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
self._pineapple_allowed = False
@property
def pineapple_allowed(self):
return self._pineapple_allowed
@pineapple_allowed.setter
def pineapple_allowed(self, value):
if value:
password = input("Enter the password: ")
if password == "abc123":
self._pineapple_allowed = value
else:
raise ValueError("Wrong password!")
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
print(pizza.pineapple_allowed)
=====>
False
Enter the password: abc123
True
=====>
LANJUTKAN BACA MATERI LENGKAP