Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Kaedah Python Deskriptor\' `__get__` dan `__set__` Berfungsi?

Bagaimanakah Kaedah Python Deskriptor\' `__get__` dan `__set__` Berfungsi?

DDD
Lepaskan: 2024-11-26 15:57:13
asal
907 orang telah melayarinya

How Do Python Descriptors' `__get__` and `__set__` Methods Work?

Memahami Deskriptor Python: get dan set

Dalam Python, deskriptor ialah mekanisme berkuasa yang membolehkan objek memintas akses dan pengubahsuaian atribut. Untuk memahami fungsinya, mari kita teliti kod yang disediakan:

class Celsius(object):
    def __init__(self, value=0.0):
        self.value = value
    def __get__(self, instance, owner):
        return self.value
    def __set__(self, instance, value):
        self.value = float(value)

class Temperature(object):
    celsius = Celsius()
Salin selepas log masuk

S1: Mengapa saya memerlukan kelas deskriptor?

A1: Kelas deskriptor merangkumi logik di sebalik memintas akses dan pengubahsuaian atribut. Dengan mengasingkan logik ini daripada kelas yang menggunakannya, anda boleh menggunakannya semula dan menyediakan antara muka yang konsisten untuk mengakses dan mengubah suai atribut.

S2: Apakah contoh dan pemilik dalam __get__?

A2:

  • contoh: Apabila mengakses atribut, parameter ini mewakili tika kelas yang memiliki deskriptor (cth., temp dalam temp.celsius).
  • pemilik: Parameter ini menunjukkan kelas yang mentakrifkan deskriptor (cth., Suhu).

S3: Bagaimanakah saya akan memanggil/menggunakan ini contoh?

A3: Anda boleh mengakses dan mengubah suai atribut celsius seperti berikut:

temp = Temperature()
temp.celsius  # calls `celsius.__get__` and returns the current Celsius value
temp.celsius = 25.0  # calls `celsius.__set__` to update the Celsius value
Salin selepas log masuk

Nota: Jika anda cuba mengakses Temperature.celsius secara langsung, instance akan menjadi Tiada.

Atas ialah kandungan terperinci Bagaimanakah Kaedah Python Deskriptor\' `__get__` dan `__set__` Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan