Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan fungsi property() untuk menentukan pengakses atribut dalam Python

Cara menggunakan fungsi property() untuk menentukan pengakses atribut dalam Python

王林
王林asal
2023-08-21 23:48:22719semak imbas

Cara menggunakan fungsi property() untuk menentukan pengakses atribut dalam Python

Cara menggunakan fungsi property() untuk mentakrifkan pengakses atribut dalam Python

Dalam Python, kita sering menghadapi situasi di mana kita perlu mentakrifkan sifat. Sifat menerangkan ciri dan keadaan objek dan boleh dibaca atau diubah suai melalui aksesori yang sepadan. Dalam Python, kita boleh menggunakan fungsi @property() untuk mentakrifkan pengakses atribut, yang menjadikan operasi membaca dan mengubah suai atribut lebih ringkas dan fleksibel. Fungsi

@property() ialah fungsi penghias terbina dalam Python, digunakan untuk menukar kaedah kepada sifat. Dengan menggunakan penghias @property(), kita boleh mentakrifkan kaedah biasa sebagai harta, supaya ia boleh dipanggil seperti pembolehubah apabila menggunakan harta itu, tanpa menggunakan sintaks panggilan fungsi.

Mari kita gunakan contoh untuk menunjukkan cara menggunakan fungsi @property() untuk mentakrifkan pengakses harta.

class Circle:
    def __init__(self, radius):
        self.radius = radius
    
    @property
    def diameter(self):
        return self.radius * 2
    
    @diameter.setter
    def diameter(self, value):
        self.radius = value / 2
    
    @property
    def area(self):
        return 3.14 * (self.radius ** 2)

Dalam contoh di atas, kami menentukan kelas Bulatan, yang mengandungi tiga atribut: jejari, diameter dan luas. Atribut jejari digunakan untuk mewakili jejari bulatan, atribut diameter digunakan untuk mewakili diameter bulatan, dan atribut luas digunakan untuk mewakili luas bulatan.

Melalui penghias @property(), kami mentakrifkan kaedah diameter sebagai pelengkap kepada sifat diameter. Apabila kita memanggil circle.diameter, kita sebenarnya memanggil kaedah diameter dan mengembalikan nilai pulangannya. Begitu juga, kita juga boleh menggunakan penghias @diameter.setter untuk mentakrifkan kaedah diameter sebagai pengubah suai sifat diameter. Apabila kita menetapkan nilai kepada circle.diameter, kita sebenarnya memanggil kaedah penetap kaedah diameter.

Begitu juga, kita juga boleh menggunakan penghias @property untuk menentukan kaedah kawasan sebagai pelengkap harta kawasan. Melalui penghias @property, kita boleh mentakrifkan kaedah sebagai sifat baca sahaja, yang hanya membenarkan bacaan dan tidak membenarkan pengubahsuaian.

Mari kita uji penggunaan sifat ini:

circle = Circle(5)
print(circle.radius) # 输出:5
print(circle.diameter) # 输出:10
circle.diameter = 20
print(circle.radius) # 输出:10
print(circle.area) # 输出:314.0

Dalam contoh di atas, kami mula-mula mencipta objek Bulatan dan menetapkan jejari 5. Kemudian, sifat telah diakses melalui circle.diameter dan circle.luas, dan nilainya telah dicetak.

Apabila kita melaksanakan bulatan.diameter = 20, kaedah penetap kaedah diameter sebenarnya dipanggil dan nilai atribut diameter diubah suai kepada 20. Selepas itu, kami mencetak nilai circle.radius sekali lagi dan mendapati ia telah diubah suai kepada 10.

Akhir sekali, kami mencetak nilai bulatan.luas dan kami dapat melihat bahawa hasilnya ialah 314.0, yang konsisten dengan luas jangkaan bulatan.

Melalui contoh di atas, kita dapat melihat bahawa mentakrifkan pengakses harta melalui fungsi @property() boleh menjadikan kod lebih ringkas dan jelas serta menyediakan antara muka yang lebih fleksibel untuk mengakses dan mengubah suai sifat. Pada masa yang sama, dengan menggunakan penghias @property, kami juga boleh menyekat kebenaran baca dan tulis bagi hartanah, menjadikan kod lebih selamat dan boleh dipercayai. Oleh itu, menggunakan fungsi @property() untuk mentakrifkan pengakses harta dalam Python ialah teknik pengaturcaraan biasa yang patut dikuasai dan diterapkan.

Atas ialah kandungan terperinci Cara menggunakan fungsi property() untuk menentukan pengakses atribut dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn