Cara Memeriksa Tipe Data dengan Python (tipe vs isinstance)
Pelajari cara memeriksa tipe data dengan Python. Pahami kapan harus menggunakan type() vs isinstance(), menangani kelas khusus, dan menulis validasi pemeriksaan tipe yang aman.
Ikhtisar
Python adalah bahasa yang diketik secara dinamis, artinya variabel dapat menampung nilai tipe data apa pun dan tipenya dapat berubah selama eksekusi. Meskipun fleksibilitas ini mempercepat pengembangan awal, fleksibilitas ini juga mengharuskan Anda memverifikasi tipe variabel saat runtime sebelum menjalankan operasi tipe tertentu, seperti melakukan aritmatika pada bilangan bulat atau memanggil metode string.
Untuk memeriksa tipe data suatu objek, Python menyediakan dua fungsi utama: `type()` dan `isinstance()`. Fungsi `type(obj)` mengembalikan tipe kelas objek yang tepat. Meskipun Anda dapat menggunakan `type(obj) == int` untuk memverifikasi apakah suatu bilangan adalah bilangan bulat, metode ini umumnya tidak disarankan karena tidak mendukung struktur pewarisan (subkelas bilangan bulat akan bernilai `False`).
Cara pythonic yang direkomendasikan untuk memeriksa tipe adalah `isinstance(obj, class_info)`. Fungsi ini memeriksa apakah suatu objek merupakan turunan dari kelas tertentu atau subkelas apa pun yang diwarisi darinya. Ini juga mendukung pemeriksaan terhadap tuple kelas (misalnya, `isinstance(value, (int, float))`), membuat kode validasi menjadi sangat fleksibel dan kuat.
Kode & Output Eksekusi
Skrip ini mendemonstrasikan pemeriksaan tipe variabel menggunakan type() dan isinstance(), yang menunjukkan perbedaan dalam pewarisan.
value_int = 42
value_str = "hello"
# 1. Checking type using isinstance() (Recommended)
is_number = isinstance(value_int, int)
print(f"Is {value_int} an int? {is_number}")
# Checking against multiple possible types
is_num_or_str = isinstance(value_str, (int, float, str))
print(f"Is '{value_str}' int, float, or str? {is_num_or_str}")
# 2. Checking type using type() (For exact class matches)
print(f"Exact type of value_int: {type(value_int).__name__}")
print("Is value_int exactly an int?", type(value_int) is int)
# 3. Inheritance difference
class CustomList(list):
pass
my_list = CustomList([1, 2, 3])
print("\nInheritance testing:")
print("isinstance(my_list, list):", isinstance(my_list, list))
print("type(my_list) is list:", type(my_list) is list)Is 42 an int? True
Is 'hello' int, float, or str? True
Exact type of value_int: int
Is value_int exactly an int? True
Inheritance testing:
isinstance(my_list, list): True
type(my_list) is list: FalseImplementasi Langkah demi Langkah
- Gunakan isinstance(variable, type_name) untuk pemeriksaan tipe umum (sesuai dengan warisan).
- Berikan tupel tipe seperti isinstance(variable, (int, float)) untuk memeriksa beberapa kelas.
- Gunakan type(variable) is type_name hanya ketika Anda harus menjamin kecocokan kelas yang tepat, mengabaikan subkelas.
Pertanyaan yang Sering Diajukan
Mengapa isinstance() lebih disukai daripada type()?
isinstance() mendukung pewarisan objek dan polimorfisme. Jika Anda membuat subkelas dari tipe bawaan, isinstance() akan mengenalinya dengan benar sebagai turunan dari kelas induk, sedangkan type() akan bernilai False.
Bagaimana saya bisa memeriksa apakah suatu objek dapat dipanggil (seperti suatu fungsi)?
Gunakan fungsi callable() bawaan, yang mengembalikan True jika objek dapat dipanggil seperti fungsi.
Topik Terkait
Pelajari cara membuat kelas dengan Python. Kuasai konstruktor __init__, metode instance, kata kunci self, dan instantiasi objek.
Cara Menangani Pengecualian dengan PythonPelajari cara menangani pengecualian dalam Python menggunakan blok coba, kecuali, lain, dan akhirnya. Tulis kode Python yang bebas kesalahan dan tahan crash.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Petunjuk Tipe Python
Pelajari cara menulis petunjuk tipe dengan Python. Tingkatkan kualitas kode, aktifkan pelengkapan otomatis, dan manfaatkan mypy untuk analisis kode statis.
Lembar
Pelajari konversi tipe implisit dan eksplisit dengan Python. Konversi antara string, bilangan bulat, float, daftar, set, dan kamus.
Python vs TypeScript: Skrip Dinamis vs Web Type-Safe
Bandingkan Python dan TypeScript. Pelajari tentang sistem tipe struktural, metadata dekorator, pemeriksaan kompiler, waktu proses web, dan alat pengembang.