Fleksibiliti Python dengan atribut dinamik adalah salah satu kekuatannya, tetapi kadangkala anda ingin mengoptimumkan penggunaan dan prestasi memori.
Masukkan slot, ciri yang membolehkan anda mentakrifkan set atribut tetap untuk kelas anda, mengurangkan overhed memori dan berkemungkinan mempercepatkan akses atribut.
Biasanya, objek Python dilaksanakan sebagai kamus untuk menyimpan atribut, yang boleh membawa kepada penggunaan memori yang lebih tinggi.
Dengan mentakrifkan slot dalam kelas anda, anda mengarahkan Python untuk menggunakan struktur dalaman yang lebih cekap memori.
Ini amat berguna apabila anda mengetahui atribut kelas akan ada lebih awal dan ingin mengelakkan overhed kamus penuh.
Berikut ialah demonstrasi cara menggunakan slot:
class Point: __slots__ = ['x', 'y'] # Define the allowed attributes def __init__(self, x, y): self.x = x self.y = y # Create a Point instance p = Point(10, 20) print(p.x) # Output: 10 print(p.y) # Output: 20 # Attempting to add a new attribute will raise an AttributeError try: p.z = 30 except AttributeError as e: print(e) # Output: 'Point' object has no attribute 'z' # Output: # 10 # 20 # 'Point' object has no attribute 'z'
Dalam contoh ini, slot mengehadkan kelas Point kepada atribut x dan y sahaja.
Percubaan untuk menetapkan sebarang atribut yang tidak disenaraikan dalam slot menghasilkan AttributeError.
Menggunakan slot boleh membawa kepada penjimatan memori yang ketara, terutamanya apabila mencipta sejumlah besar kejadian, dengan menghapuskan overhed kamus atribut.
Ia juga boleh meningkatkan kelajuan akses atribut.
Walau bagaimanapun, berhati-hati: slot boleh mengehadkan beberapa keupayaan dinamik objek Python dan mungkin tidak sesuai untuk semua kes penggunaan.
Atas ialah kandungan terperinci Trik Python: Keajaiban __slot__. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!