Rumah >pembangunan bahagian belakang >Tutorial Python >Bolehkah saya Mengakses Kunci Kamus sebagai Atribut dalam Python, dan Apakah Trade-off?
Mengakses Kekunci Dict Seperti Atribut
Walaupun mungkin mudah untuk mengakses kekunci dict menggunakan atribut objek (mis., obj.foo dan bukannya obj ['foo']), Python tidak menyediakan fungsi ini di luar kotak dengan pasti sebab.
Satu pendekatan ialah mencipta kelas kamus tersuai, seperti AttributeDict, yang mengatasi kaedah __getitem__ dan __setitem__ untuk menyediakan akses seperti atribut. Walau bagaimanapun, pendekatan ini mempunyai hadnya.
Penyelesaian yang lebih baik ialah menggunakan atribut __dict__, iaitu kamus yang mengandungi atribut objek. Dengan memberikan contoh AttrDict kepada __dict__, kami boleh mengakses kekunci dict sebagai atribut.
class AttrDict(dict): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.__dict__ = self
Pendekatan ini menawarkan beberapa kelebihan:
Walau bagaimanapun, terdapat potensi amaran:
Satu sebab Python tidak menyediakan akses seperti atribut secara lalai ialah ia berpotensi menjejaskan keselamatan ruang nama. Dengan mendedahkan kamus dalaman, kami secara tidak sengaja boleh menimpa atau mengganggu kaedah dict terbina dalam.
Oleh itu, adalah penting untuk menimbang kebaikan dan keburukan dengan teliti sebelum menggunakan pendekatan ini dalam kod pengeluaran.
Atas ialah kandungan terperinci Bolehkah saya Mengakses Kunci Kamus sebagai Atribut dalam Python, dan Apakah Trade-off?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!