Objek Kekal dalam Python: Melangkaui Penyelesaian Asas
Walaupun kelas tuple standard menyediakan kebolehubah, artikel ini meneroka teknik yang lebih maju untuk mencipta objek tidak berubah dalam Python tulen atau dengan sambungan C.
Mengatasi __setattr__: Pendekatan Terhad
Satu penyelesaian biasa ialah mengatasi kaedah setattr. Walau bagaimanapun, ini menghalang tetapan atribut walaupun dalam fungsi init. Oleh itu, ia mungkin tidak sesuai untuk semua senario.
Subkelas Tuple: Penyelesaian Separa
Pendekatan lain ialah subkelas tuple, menyediakan tersuai baharu kaedah dan sifat untuk mengakses atribut. Walau bagaimanapun, kaedah ini tidak sepenuhnya menghalang capaian atribut melalui diri[0] dan diri[1], yang boleh menyusahkan.
Penyelesaian bernamatuple: Kesederhanaan dan Keserasian
Penyelesaian yang lebih mudah dan lebih mantap ialah menggunakan kelas bernamatuple daripada modul koleksi Python:
<code class="python">Immutable = collections.namedtuple("Immutable", ["a", "b"])</code>
Sama seperti teknik sebelumnya, ini menghasilkan jenis yang diperoleh daripada tupel dan menggunakan __slots__. Ia menawarkan beberapa kelebihan:
Kesimpulan
Kelas namedtuple menyediakan cara yang mudah dan cekap untuk mencipta objek tidak berubah dalam Python. Ia merupakan alternatif yang berdaya maju kepada более teknik lanjutan dan menawarkan faedah tambahan seperti keserasian bersiri.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk yang sesuai dengan kriteria: **Pilihan 1 (Fokus pada Masalah):** * **Cara Mencipta Objek Benar-Benar Tidak Boleh Berubah dalam Python: Melangkaui Asas** **Pilihan 2 (Serlahkan Penyelesaian). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!