Bolehkah Kamus Python Meniru Atribut Objek?
Mengakses kekunci kamus kerana atribut objek menawarkan kemudahan, tetapi menimbulkan persoalan tentang isu yang berpotensi. Artikel ini meneroka penggunaan AttrDict, kelas tersuai yang direka bentuk untuk menangani keperluan ini.
Pendekatan Kelas Tersuai
Untuk meniru atribut objek untuk kamus, seseorang boleh mencipta subkelas dipanggil AttrDict:
class AttrDict(dict): def __getattr__(self, attr): return self[attr] def __setattr__(self, attr, value): self[attr] = value
Kelebihan Tersuai Kelas
Kelemahan Tersuai Kelas
Cara Ia Berfungsi
Kelas AttrDict menetapkan dirinya sebagai atribut __dict__ dalaman objek. Ini memautkan ruang nama kamus kepada atribut objek, membenarkan akses melalui kedua-dua sintaks.
Rasional Python untuk Tidak Menyediakan Ciri Ini
Python mengelakkan ciri akses atribut langsung untuk menghalang pencemaran ruang nama. Menugaskan item kamus berkemungkinan boleh menggantikan atribut kaedah, yang membawa kepada tingkah laku yang tidak dijangka. Contohnya:
d = AttrDict() d.update({'items': ['jacket', 'necktie', 'trousers']}) for k, v in d.items(): # TypeError: 'list' object is not callable
Atas ialah kandungan terperinci Bolehkah Kamus Python Digunakan Seperti Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!