Apabila bekerja dengan objek Python, selalunya perlu untuk menentukan jenisnya atau sama ada ia tergolong dalam kelas tertentu. Python menyediakan dua kaedah yang biasa digunakan untuk tugas ini: type() dan isinstance(). Artikel ini meneroka perbezaan antara kedua-dua fungsi ini dan membincangkan aplikasi masing-masing.
Fungsi type() mengembalikan jenis objek sebagai objek jenis. Objek jenis mewakili jenis nilai, bukannya contoh jenis itu. Untuk menentukan sama ada objek daripada jenis tertentu, jenis objek dibandingkan dengan objek jenis yang mewakili jenis yang diingini.
Contohnya:
a = 1 b = "Hello" print(type(a)) # <class 'int'> print(type(b)) # <class 'str'>
Dalam kes ini, taip (a) mengembalikan objek jenis yang mewakili kelas int, manakala jenis(b) mengembalikan objek jenis yang mewakili kelas str.
Fungsi isinstance() menyemak sama ada objek ialah tika kelas tertentu atau subkelas kelas itu. Ia mengambil objek sebagai hujah pertama dan kelas atau tuple kelas sebagai hujah kedua. isinstance() mengembalikan True jika objek ialah contoh kelas atau subkelas yang ditentukan, dan False sebaliknya.
Pertimbangkan contoh ini:
a = 1 b = [1, 2, 3] print(isinstance(a, int)) # True print(isinstance(b, list)) # True
Dalam contoh ini, isinstance(a, int ) mengembalikan Benar kerana a ialah contoh kelas int. Begitu juga, isinstance(b, list) mengembalikan True kerana b ialah contoh kelas senarai.
Perbezaan utama antara type() dan isinstance() ialah jenis() menyemak kesamaan jenis objek, manakala isinstance() menyemak perhubungan warisan. isinstance() mempertimbangkan warisan, bermakna objek yang mewarisi daripada kelas tertentu juga akan dianggap sebagai contoh kelas itu. type(), sebaliknya, menyemak dengan ketat kesamaan jenis dan tidak mengambil kira warisan.
Secara amnya, disyorkan untuk menggunakan isinstance() jika anda berminat dalam menentukan sama ada sesuatu objek adalah daripada kelas tertentu atau salah satu daripada subkelasnya. Ini amat berguna apabila berurusan dengan hierarki objek yang kompleks.
Untuk semakan jenis mudah, di mana warisan bukan pertimbangan, type() boleh digunakan sebagai alternatif yang lebih pantas.
Atas ialah kandungan terperinci Jenis Python() vs. isinstance(): Bilakah Saya Harus Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!