Properti Python ()

Konstruksi properti () mengembalikan atribut properti.

Sintaksnya property()adalah:

 properti (fget = Tidak Ada, fset = Tidak Ada, fdel = Tidak Ada, doc = Tidak Ada)

Bacaan yang Direkomendasikan: Python @property: Bagaimana Cara Menggunakannya dan Mengapa?

property () Parameter

The property()mengambil empat parameter opsional:

  • fget (opsional) - Fungsi untuk mendapatkan nilai atribut. Default-nya adalah None.
  • fset (opsional) - Fungsi untuk mengatur nilai atribut. Default-nya adalah None.
  • fdel (opsional) - Fungsi untuk menghapus nilai atribut. Default-nya adalah None.
  • doc (opsional) - String yang berisi dokumentasi (docstring) untuk atributnya. Default-nya adalah None.

Nilai pengembalian dari properti ()

property() mengembalikan atribut properti dari pengambil, penyetel, dan penghapus yang diberikan.

  • Jika tidak ada argumen yang diberikan, property()mengembalikan atribut properti dasar yang tidak berisi getter, setter, atau deleter.
  • Jika doc tidak tersedia, property()ambil docstring dari fungsi pengambil.

Contoh 1: Buat atribut dengan getter, setter, dan deleter

 class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name

Keluaran

 Getting name Namanya adalah: Adam Setting name to John Menghapus nama 

Di sini, _name digunakan sebagai variabel privat untuk menyimpan nama Person.

Kami juga mengatur:

  • metode pengambil get_name()untuk mendapatkan nama orang tersebut,
  • metode penyetel set_name()untuk mengatur nama orang,
  • metode deleter del_name()untuk menghapus nama orang tersebut.

Sekarang, kami menetapkan nama atribut properti baru dengan memanggil property()metode tersebut.

Seperti yang ditunjukkan dalam program, merujuk secara p.nameinternal panggilan get_name()sebagai getter, set_name()sebagai penyetel dan del_name()sebagai penghapus melalui keluaran tercetak yang ada di dalam metode.

Contoh 2: Menggunakan @property decorator

Alih-alih menggunakan property(), Anda dapat menggunakan dekorator Python @propertyuntuk menetapkan pengambil, penyetel, dan penghapus.

 class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name

Keluaran

 Getting name Namanya adalah: Adam Setting name to John Menghapus nama 

Di sini, alih-alih menggunakan property(), kami menggunakan @propertydekorator.

Pertama, kami menetapkan bahwa name()metode juga merupakan atribut dari Orang. Ini dilakukan dengan menggunakan @propertymetode sebelum pengambil seperti yang ditunjukkan dalam program.

Selanjutnya, kami menggunakan nama atribut untuk menentukan penyetel dan penghapus.

Ini dilakukan dengan menggunakan @name.setteruntuk metode penyetel dan @name.deleteruntuk metode deleter.

Perhatikan, kita telah menggunakan metode yang sama name()dengan definisi berbeda untuk mendefinisikan getter, setter, dan deleter.

Sekarang, setiap kali kita menggunakannya p.name, secara internal memanggil getter, setter, dan deleter yang sesuai seperti yang ditunjukkan oleh output tercetak yang ada di dalam metode.

Artikel yang menarik...