Harta tanah Python ()

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.namedalaman 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 @propertyuntuk 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 @propertypenghias.

Pertama, kami menyatakan bahawa name()kaedah itu juga merupakan sifat orang. Ini dilakukan dengan menggunakan @propertykaedah sebelum mendapatkan seperti yang ditunjukkan dalam program.

Seterusnya, kami menggunakan nama atribut untuk menentukan setter dan penghapus.

Ini dilakukan dengan menggunakan @name.setterkaedah setter dan @name.deleterkaedah 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.

Artikel menarik...