Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Melaksanakan Pengambil dan Penetap Secara Python?

Bagaimanakah Saya Boleh Melaksanakan Pengambil dan Penetap Secara Python?

Susan Sarandon
Susan Sarandonasal
2024-12-14 17:46:11834semak imbas

How Can I Pythonically Implement Getters and Setters?

Apakah Cara Pythonic untuk Menggunakan Getters dan Setters?

Menggunakan getter dan setter menawarkan cara yang mudah untuk mengawal akses kepada atribut peribadi dalam Python . Berikut ialah beberapa pendekatan yang biasa digunakan:

Pendekatan Berasaskan Kaedah:

Anda boleh mencipta kaedah getter dan setter yang berasingan, seperti yang ditunjukkan di bawah:

def set_property(property, value):  
def get_property(property): 

Walau bagaimanapun, pendekatan ini tidak dianggap sangat Pythonic. Cara yang lebih digemari ialah menggunakan:

Manipulasi Atribut Objek:

Anda boleh terus memberikan nilai kepada atribut objek menggunakan notasi titik:

object.property = value  
value = object.property

Pendekatan ini mudah digunakan dan difahami, tetapi ia tidak menawarkan sebarang pengkapsulan atau kawalan ke atas atribut akses.

Sifat Python:

Cara paling Pythonic untuk melaksanakan getter dan setter ialah menggunakan sifat. Ini membolehkan anda mentakrifkan kaedah getter, setter dan deleter dalam satu baris kod:

class C(object):
    @property
    def x(self):
        """I'm the 'x' property."""
        print("getter of x called")
        return self._x

    @x.setter
    def x(self, value):
        print("setter of x called")
        self._x = value

    @x.deleter
    def x(self):
        print("deleter of x called")
        del self._x

c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pengambil dan Penetap Secara 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