61. PYTHON (OOP) – Property

Belajar Bahasa Python Lengkap

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


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.