ฟังก์ชัน isinstance() ใน Python คืนค่า True/False ว่าตัวแปรตรงกับชนิดข้อมูลที่ระบุ ไวยากรณ์: isinstance(variable_to_check, data_type)
บทนำ
การตรวจสอบ Data Type เป็น Operation พื้นฐาน เช่น ต้องการทราบว่าตัวแปรเป็น String หรือ Number เพราะแต่ละ Type รองรับ Operation ต่างกัน isinstance() ช่วย Verify ได้อย่างชัดเจน
ไวยากรณ์และพารามิเตอร์
isinstance(object, data_types)
- object – อ็อบเจกต์ที่ต้องการตรวจสอบ
- data_types – ชนิดข้อมูลหรือ Tuple ของชนิดข้อมูลหลายชนิด (เช่น
(int, float))
คืน True ถ้า Object เป็น Instance ของ Type ที่ระบุ (หรือ Subclass) มิฉะนั้น False
ตัวอย่างการใช้งาน
ตรวจสอบ String
print(isinstance("Hello", str)) # True
ตรวจสอบตัวเลข (int หรือ float)
answer = 5 * 8
user_input = input("What is 5 x 8? ") # คืน String เสมอ
print(isinstance(user_input, (int, float))) # False
# แปลงเป็น int ก่อน
user_answer = int(input("What is 5 x 8? "))
print(isinstance(user_answer, (int, float))) # True
จุดสำคัญ: input() คืนค่า String ต้องแปลง Type ก่อนตรวจสอบ
ตรวจสอบกับ Custom Class
class Dog: pass class Cat: pass buddy = Dog() print(isinstance(buddy, Dog)) # True print(isinstance(buddy, Cat)) # False print(isinstance(buddy, (Dog, Cat))) # True
isinstance() vs type()
| ฟังก์ชัน | การทำงาน | เหมาะสำหรับ |
|---|---|---|
type(obj) | คืน Type Object ของ obj (<class 'int'>) | ดู Type จริงของ Object |
isinstance(obj, Type) | คืน True/False ว่า obj เป็น Instance ของ Type (รวม Subclass) | Verify Type ในเงื่อนไข (if isinstance...) |
isinstance() รองรับ Inheritance (Subclass ถือเป็น Instance ของ Parent Class) ส่วน type() ตรวจสอบ Exact Type เท่านั้น
สรุป
isinstance() เป็นเครื่องมือมาตรฐานสำหรับ Type Checking ใน Python ใช้ในเงื่อนไข IF เพื่อป้องกัน Error จาก Type ผิดพลาด และรองรับการตรวจสอบหลาย Type พร้อมกันด้วย Tuple