Bagaimana cara saya memeriksa atribut di python?

Karena semua yang ada di Python adalah objek dan objek memiliki atribut (bidang dan metode), wajar untuk menulis program yang dapat memeriksa jenis atribut yang dimiliki objek. Misalnya, program Python dapat membuka soket di server dan menerima skrip Python yang dikirim melalui jaringan dari mesin klien. Setelah menerima skrip baru, program Python sisi server dapat memeriksa atau lebih tepatnya mengintrospeksi objek, modul, dan fungsi dalam skrip baru untuk memutuskan cara menjalankan fungsi, mencatat hasilnya, dan berbagai tugas berguna

hasattr vs. coba-kecuali

Ada dua cara untuk memeriksa apakah objek Python memiliki atribut atau tidak. Cara pertama adalah memanggil fungsi bawaan hasattr(object, name), yang mengembalikan True jika string name adalah nama salah satu atribut object, False jika tidak. Cara kedua adalah try untuk mengakses atribut dalam object dan melakukan beberapa fungsi lain jika AttributeError dimunculkan

[piton]
>>> hasattr('abc', 'atas')
BENAR
>>> hasattr('abc', 'lebih rendah')
BENAR
>>> hasattr('abc', 'konversi')
PALSU
[/python]

Dan

[piton]
>>> mencoba
'abc'. atas()
kecuali AttributeError
print("abc tidak memiliki atribut 'atas'")
...
'ABC'
>>> mencoba
'abc'. mengubah()
kecuali AttributeError
print("abc tidak memiliki atribut 'convert'")
...
abc tidak memiliki atribut 'convert'
[/python]

Apa perbedaan antara kedua gaya ini? . Sementara try-except disebut sebagai "Lebih Mudah Meminta Pengampunan daripada Izin" (EAFP) karena Anda try akses atribut terlebih dahulu dan meminta pengampunan di blok True1 alih-alih meminta izin seperti hasattr

Lalu, cara mana yang lebih baik? . Kadang-kadang masuk akal untuk menggunakan LBYL jika Anda ingin memastikan atribut pasti ada dan menghentikan eksekusi jika tidak. Misalnya, Anda tahu pasti pada suatu titik dalam program bahwa object yang diteruskan harus memiliki atribut penunjuk file yang valid di mana kode berikut dapat berfungsi. Di sisi lain, masuk akal juga untuk menggunakan EAFP jika Anda tahu atribut mungkin tidak ada di beberapa titik selama eksekusi program. Misalnya, pemutar musik tidak dapat menjamin file MP3 selalu ada di disk di lokasi yang sama, karena file tersebut dapat dihapus, dimodifikasi, atau dipindahkan oleh pengguna kapan saja. Dalam hal ini, pemutar musik dapat try mengakses file MP3 terlebih dahulu dan memberi tahu pengguna bahwa file tersebut tidak ada di blok True1

hasattr vs __dict__

Meskipun hasattr adalah fungsi bawaan yang dirancang untuk memeriksa apakah atribut ada dalam suatu objek, kadang-kadang mungkin lebih akurat untuk memeriksa True7 objek untuk keberadaan atribut daripada fakta bahwa hasattr tidak peduli dengan alasan mengapa . Misalnya, atribut mungkin dilampirkan ke objek karena kelas induknya, bukan objek itu sendiri

[piton]
>>> kelas A (objek)
foo = 1
...
>>> kelas B(A)
lulus
...
>>> b = B()
>>> hasattr(b, 'foo')
BENAR
>>> 'foo' di b. __dikt__
PALSU
[/python]

Pada kode sebelumnya, karena class True_9 adalah subclass dari class name0, class True9 juga memiliki atribut "foo". Namun, karena "foo" diwarisi dari name0, name3 tidak mengandungnya. Terkadang, penting untuk mengetahui apakah atribut berasal dari kelas objek itu sendiri atau dari superclass objek

Kiat dan Saran

  • hasattr mengikuti prinsip pengetikan bebek dengan Python

    Ketika saya melihat seekor burung yang berjalan seperti bebek dan berenang seperti bebek dan bersuara seperti bebek, saya menyebut burung itu bebek

    Jadi, sebagian besar waktu Anda ingin menggunakan hasattr untuk memeriksa apakah ada atribut dalam suatu objek

  • try-except dan True7 memiliki kasus penggunaannya sendiri yang sebenarnya cukup sempit dibandingkan dengan hasattr. Jadi, penting untuk menyimpan kasus penggunaan khusus ini di belakang kepala Anda sehingga Anda dapat mengenalinya selama pengkodean dan menggunakan idiom yang tepat sesuai dengan itu.

Setelah Anda mempelajari cara memeriksa apakah suatu objek memiliki atribut di Python, periksa cara mendapatkan atribut dari suatu objek

Bagaimana Anda menemukan atribut di Python?

Atribut kelas juga dapat diakses menggunakan metode dan fungsi bawaan berikut. .
getattr() – Fungsi ini digunakan untuk mengakses atribut objek
hasattr() – Fungsi ini digunakan untuk memeriksa apakah atribut ada atau tidak
setattr() – Fungsi ini digunakan untuk mengatur atribut

Bagaimana Anda memeriksa apakah ada atribut di Python?

Jika Anda ingin menentukan apakah objek tertentu memiliki atribut tertentu, maka metode hasattr() adalah yang Anda cari. Metode menerima dua argumen, objek dan atribut dalam format string.

Bagaimana Anda melihat semua atribut objek dengan Python?

02) Menggunakan dir() . Fungsi ini mengembalikan semua atribut (variabel, metode, atau objek) yang terkait dengan parameter yang diteruskan, dalam cakupan tertentu.

Bagaimana Anda menemukan atribut suatu objek?

Karakteristik objek yang selalu ada dan menempati penyimpanan, bahkan jika atributnya tidak memiliki nilai. Dalam hal ini, atribut serupa dengan bidang dalam struktur data dengan panjang tetap. Fitur yang membedakan atribut adalah bahwa setiap atribut memiliki metode sendiri untuk mengatur dan mendapatkan nilainya .