Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Penghias @property Python berfungsi untuk Mencipta Hartanah?

Bagaimanakah Penghias @property Python berfungsi untuk Mencipta Hartanah?

Patricia Arquette
Lepaskan: 2024-12-19 01:12:11
asal
567 orang telah melayarinya

How Does Python's @property Decorator Work to Create Properties?

Memahami @property Decorator dalam Python

Dalam Python, @property decorator membenarkan anda mencipta sifat yang berkelakuan seperti atribut contoh biasa. Walau bagaimanapun, tidak seperti fungsi harta terbina dalam yang mengambil hujah, penghias @property tidak menerima sebarang hujah secara eksplisit.

Cara Ia Berfungsi

Untuk memahami cara @property penghias berfungsi, adalah penting untuk memahami dahulu bahawa fungsi property() mengembalikan objek deskriptor. Ini ialah perantara yang terletak di antara kejadian dan hartanya, membenarkan logik tambahan digunakan.

Objek Deskriptor

Objek deskriptor dikembalikan oleh harta( ) fungsi mempunyai tiga kaedah terbina dalam:

  • getter: Kepada dapatkan semula nilai harta
  • penetap: Untuk menetapkan nilai harta
  • pemadam: Untuk memadamkan harta

Mencipta Hartanah dengan Penghias

Apabila @property decorator digunakan pada fungsi, ia mengembalikan objek deskriptor dan memberikannya kepada nama harta. Objek ini mengekalkan fungsi pemeroleh fungsi asal dan termasuk dua fungsi tambahan yang mewakilkan kepada kaedah penetap dan pemadam harta itu.

Sebagai contoh:

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x
Salin selepas log masuk

Kod di atas mencipta harta bernama "x" yang boleh mendapatkan semula nilai diri._x tanpa sebarang objek harta yang jelas. Fungsi getter dicipta secara automatik oleh penghias.

Penetap dan Penghias Penghapus

Untuk menambah kaedah penetap dan pemadam, cuma tambahkan .setter dan .deleter pada @property objek deskriptor, melepasi fungsi yang anda inginkan:

@x.setter
def x(self, value):
    self._x = value

@x.deleter
def x(self):
    del self._x
Salin selepas log masuk

Dengan menggunakan kaedah ini, anda boleh laksanakan gelagat tersuai untuk menetapkan dan memadamkan nilai sifat.

Butiran Pelaksanaan

Sintaks @decorator untuk @property ialah gula sintaksis. Di sebalik tabir, kod berikut dilaksanakan:

def x(self): return self._x
x = property(x)
Salin selepas log masuk

Contoh Deskriptor

Berikut ialah contoh bagaimana pelaksanaan Python tulen bagi deskriptor harta akan berfungsi:

class Property:
    def __init__(self, fget=None, fset=None, fdel=None, doc=None):
        self.fget = fget
        self.fset = fset
        self.fdel = fdel
        self.__doc__ = doc

    def __get__(self, obj, objtype=None):
        if obj is None:
            return self
        if self.fget is None:
            raise AttributeError("unreadable attribute")
        return self.fget(obj)
Salin selepas log masuk

Kelas ini membolehkan anda membuat sifat secara manual dengan pengambil, penetap dan pemadam fungsi.

Atas ialah kandungan terperinci Bagaimanakah Penghias @property Python berfungsi untuk Mencipta Hartanah?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan