Rumah >pembangunan bahagian belakang >Tutorial Python >Bila dan Bagaimana Anda Harus Menggunakan Fungsi `getattr()` Python?
Memahami dan Menggunakan Getattr() dalam Python
Walaupun anda mungkin telah menemui fungsi getattr, memahami tujuan sebenar ia mungkin sukar difahami. Di luar keupayaannya untuk mencerminkan li.pop sebagai getattr(li, "pop"), pemahaman yang lebih mendalam tentang getattr adalah penting.
Bila dan Cara Menggunakan Getattr()
Objek Python mempunyai atribut, termasuk sifat data dan fungsi. Mengakses atribut ini biasanya melibatkan person.name atau person.the_method(). Walau bagaimanapun, situasi timbul di mana nama atribut tidak diketahui sehingga masa jalan. Di sinilah getattr bersinar.
Pertimbangkan attr_name pembolehubah yang menyimpan nama atribut (cth., 'jantina'). Daripada person.gender, kita boleh menggunakan getattr(person, attr_name) untuk mengakses atribut.
Contoh:
attr_name = 'name' person = Person() getattr(person, attr_name)
Mengendalikan Ketiadaan Atribut
Getattr menimbulkan AttributeError apabila atribut yang ditentukan tiada. Untuk mengurangkan perkara ini, berikan nilai lalai sebagai argumen ketiga, yang akan dikembalikan jika atribut tidak ditemui.
getattr(person, 'age', 0)
Mengulang Atribut Menggunakan Getattr()
Gabungkan getattr dengan dir untuk mengulangi semua nama atribut dan mendapatkannya nilai.
for attr_name in dir(obj): attr_value = getattr(obj, attr_name)
Aplikasi Praktikal: Mencari dan Menggunakan Kaedah Bermula dengan Ujian
for attr_name in dir(obj): if attr_name.startswith('test'): getattr(obj, attr_name)()
Kesimpulan
Getattr membolehkan mendapatkan semula atribut melalui namanya, walaupun tidak diketahui semasa pengekodan. Fleksibilitinya meluas kepada mengekstrak nilai atribut, mengendalikan ketiadaan atribut, dan mengenal pasti dan menggunakan kaedah dengan konvensyen penamaan khusus. Manfaatkan kuasa getattr untuk manipulasi atribut dinamik dalam pengaturcaraan Python anda.
Atas ialah kandungan terperinci Bila dan Bagaimana Anda Harus Menggunakan Fungsi `getattr()` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!