Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Modul Matematik
Introspeksi Kod
Objektif
Periksa beberapa item lama yang disimpan di loteng dengan menggunakan pengintrospeksi kod untuk mengetahui apa sebenarnya item itu dan bagaimana ia digunakan.
Loteng itu mempunyai pejabat yang jarang digunakan dan terdapat beberapa peti lama yang mengandungi barangan berharga yang telah dilupakan sejak lama. Melainkan dinyatakan sebaliknya atau melainkan memo menyediakan maklumat, kadangkala agak sukar untuk mengenal pasti item, atau konstanta yang dikumpul di lapangan. Selain itu, sukar untuk mengenal pasti julat perkara yang boleh dicapai dengan objek tertentu atau apa sifat-sifatnya. Bagi mengatasinya, kita boleh menggunakan Pengintrospeksi Kod.
Pengintrospeksi Kod membolehkan kita memeriksa dan mengenal pasti beberapa potongan kod serta menunjukkan beberapa sifatnya. Untuk ini, kita akan menggunakan empat (4) fungsi introspeksi terbina dalam yang dibungkus dengan kod python asas: type(), id(), repr(), dir() dan help(). Fungsi-fungsi ini berfungsi seperti berikut:
type(): Fungsi ini memberitahu anda jenis objek apa yang telah anda letakkan sebagai argumen. Sebagai contoh, jika anda meletakkan satu pembolehubah sebagai argumen, fungsi ini akan mengenal pasti objek tersebut sebagai pembolehubah.id(): Setiap objek yang pernah dicipta dalam python mempunyai id unik yang mengenal pasti objek tersebut dalam kod. Dengan meletakkan sebuah objek sebagai argumen kepada fungsi ini, ia akan mengembalikan id unik objek tersebut.repr(): Menukarkan nilai bukan string kepada string, berguna untuk menukarkan data ke dalam bentuk yang boleh dibaca.dir(): Memaparkan semua atribut yang dimiliki oleh fungsi, berguna untuk mengetahui apa yang boleh dicapai oleh jenis objek tertentu.help(): Memaparkan semua maklumat mengenai suatu objek, fungsi, kelas, dan sebagainya yang tersedia dalam daftar python.
Selain itu, kita mempunyai fungsi async baru iaitu fungsi display(). Fungsi ini serupa dengan fungsi read() tetapi membolehkan anda memaparkan data dinamik, seperti fungsi-fungsi pengintrospeksi kod yang menghasilkan data dinamik. Sintaksnya adalah seperti berikut: await player.display( -data-). Kesemua fungsi ini akan berguna untuk menganalisis data, iaitu berguna apabila kita menggunakan Kaedah (Methods) dan mula mengimport fungsi baru serta untuk menganalisis sebarang kod yang ingin kita kenal pasti sifat-sifatnya.
Kita akan menggunakan fungsi-fungsi ini untuk mengenal pasti dan mengkatalogkan item-item yang disimpan di loteng. Untuk memulakan, berjalan ke tanda X gelap di atas permaidani berwarna bermula dengan yang berada di atas permaidani merah. Terdapat tiga (3) konstanta di kawasan ini: red_container, green_container, dan blue_container, konstanta-konstanta ini mewakili bekas dalam setiap peti yang sepadan dengan setiap permaidani berwarna.
Bagi setiap tanda X, hadap peti dan gunakan fungsi open() untuk membuka peti-peti tersebut, gunakan fungsi collect() dengan konstanta permaidani berwarna sepadan untuk mengambilnya daripada peti. Gunakan fungsi introspeksi type() untuk mengenal pasti jenis konstanta yang terdapat dalam peti, output yang dihasilkannya adalah data mentah dan untuk ini kita gunakan fungsi repr() untuk menukarkannya kepada string. Gunakan fungsi speak() untuk memaparkan string yang terhasil daripada penggabungan fungsi dan konstanta, sebagai contoh: player.speak(repr(type(red_container))). Ikuti dengan fungsi speak() bersama konstanta untuk mengenal pasti kandungannya secara langsung, sebagai contoh: player.speak(red_container).
Setelah kesemua tiga (3) konstanta tersebut dikumpul, diperiksa dan dikenalpasti, berjalan ke tanda X terang di hadapan meja. Ciptakan tiga pembolehubah yang dinamakan: item_id_red, item_id_green, item_id_blue, pembolehubah ini akan digunakan untuk menyimpan nombor id bagi setiap konstanta yang anda kumpulkan. Gunakan fungsi introspeksi id() untuk mendapatkan nombor pengenalan unik bagi konstanta tersebut dengan menambahkannya sebagai argumen. Padankan nama pembolehubah dengan nama konstanta menggunakan format sebagai contoh: item_id_red = id(red_container), lakukan ini untuk semua tiga (3) pembolehubah dan konstanta.
Setelah kesemua tiga (3) pembolehubah telah diisi, simpan semuanya dalam satu senarai yang dinamakan item_list dan di tanda X terang gunakan fungsi display() untuk memastikan ia dicatat dalam memo di atas meja, seperti ini: await player.display(item_list).
Setelah senarai itu telah dicatat, berjalan ke tanda X gelap di atas permaidani ungu dan hadap meja. Di sini kita akan menggunakan fungsi dir() untuk mengenal pasti apa atribut yang dimiliki oleh senarai itu, bagaimanapun outputnya adalah data mentah yang mungkin sukar untuk dipaparkan. Untuk ini, kita gunakan fungsi repr() untuk menukarkan data tersebut kepada string yang boleh dibaca. Ciptakan satu pembolehubah yang dinamakan item_attributes dan simpan string yang terhasil itu, seperti ini: item_attributes = repr(dir(item_list)). Akhir sekali, gunakan fungsi display() untuk memastikan ia dicatat pada memo di atas meja.
Berjalan ke tanda X gelap di atas permaidani putih untuk melakukan perkara yang sama seperti yang anda lakukan dengan dir() tetapi dengan help(), ini akan menghuraikan semua dokumentasi penggunaan objek tersebut. Ciptakan satu pembolehubah yang dinamakan item_help dan simpan string yang terhasil itu, seperti ini: item_help = repr(help(item_list)). Akhir sekali, gunakan fungsi read() untuk memastikan ia dicatat dalam memo di atas meja juga bagi melengkapkan tahap ini.