Pembinaan properti () mengembalikan atribut harta tanah.
Sintaksnya property()
adalah:
harta tanah (fget = Tiada, fset = Tiada, fdel = Tiada, dokumen = Tiada)
Bacaan yang Disyorkan: Python @property: Bagaimana Menggunakannya dan Mengapa?
harta tanah () Parameter
Yang property()
mengambil masa empat parameter pilihan:
- fget (pilihan) - Fungsi untuk mendapatkan nilai atribut. Lalai untuk
None
. - fset (pilihan) - Fungsi untuk menetapkan nilai atribut. Lalai untuk
None
. - fdel (pilihan) - Fungsi untuk menghapus nilai atribut. Lalai untuk
None
. - doc (pilihan) - Rentetan yang mengandungi dokumentasi (docstring) untuk atribut. Lalai untuk
None
.
Nilai pulangan dari harta tanah ()
property()
mengembalikan atribut harta tanah dari pemberi, pengatur dan penghapus yang diberikan.
- Sekiranya tidak ada argumen yang diberikan,
property()
kembalikan atribut harta tanah yang tidak mengandungi getter, setter atau penghapus. - Sekiranya dokumen tidak disediakan,
property()
ambil dokstring fungsi getter.
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
Pengeluaran
Mendapat nama Nama adalah: Adam Menetapkan nama kepada John Menghapus nama
Di sini, _name digunakan sebagai pemboleh ubah peribadi untuk menyimpan nama Orang.
Kami juga menetapkan:
- kaedah
get_name()
mendapatkan untuk mendapatkan nama orang itu, - kaedah setter
set_name()
untuk menetapkan nama orang itu, - kaedah penghapus
del_name()
untuk memadamkan nama orang itu.
Sekarang, kami menetapkan nama atribut properti baru dengan memanggil property()
kaedah.
Seperti yang ditunjukkan dalam program ini, rujukan p.name
dalaman panggilan get_name()
sebagai getter, set_name()
sebagai penetap dan del_name()
sebagai Deleter melalui output hadir yang dicetak di dalam kaedah.
Contoh 2: Menggunakan penghias @property
Daripada menggunakan property()
, anda boleh menggunakan penghias Python @property
untuk menetapkan pengambil, pengatur 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
Pengeluaran
Mendapat nama Nama adalah: Adam Menetapkan nama kepada John Menghapus nama
Di sini, daripada menggunakan property()
, kami menggunakan @property
penghias.
Pertama, kami menyatakan bahawa name()
kaedah itu juga merupakan sifat orang. Ini dilakukan dengan menggunakan @property
kaedah sebelum mendapatkan seperti yang ditunjukkan dalam program.
Seterusnya, kami menggunakan nama atribut untuk menentukan setter dan penghapus.
Ini dilakukan dengan menggunakan @name.setter
kaedah setter dan @name.deleter
kaedah penghapusan.
Perhatikan, kami telah menggunakan kaedah yang sama name()
dengan definisi yang berbeza untuk menentukan getter, setter, dan penghapus.
Sekarang, setiap kali kita menggunakan p.name
, ia secara dalaman memanggil getter, setter, dan deleter yang sesuai seperti yang ditunjukkan oleh output yang dicetak yang terdapat di dalam kaedah ini.