isinstance() فحص النوع
آخر تحديث: 2026-09-22
isinstance() فحص النوع
isinstance(obj, classinfo) تتحقق مما إذا كان obj نسخة من classinfo (أو نسخة من صنفه الفرعي)، ويمكن أن يكون classinfo tuple.
| التصنيف | الدوال المدمجة |
|---|---|
| النوع | دالة مدمجة |
| إصدار بايثون | all |
📝 الصياغة
isinstance(object, classinfo)
⚙️ المعاملات
| object مطلوب | The object to check. |
|---|---|
| classinfo مطلوب | A type, or a tuple of types (union check). |
القيمة المُعادة:True if object is an instance of classinfo (or any type in it).
💥 الاستثناءات
TypeError— Raised when classinfo is not a type or a tuple of types.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
True
True
False
🏷️ دوال مدمجة ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qما الفرق بين isinstance(x, int) و type(x) == int؟
Aتراعي isinstance علاقات الوراثة (مثيل الصنف الفرعي يُرجع True أيضًا)؛ بينما type(x) == int يتطلب مطابقة النوع تمامًا. عادةً isinstance أكثر مرونة.
Qماذا تُرجع isinstance(True, int)؟
Aتُرجع True، لأن bool صنف فرعي من int؛ لتمييز القيم المنطقية عن الأعداد تحقق إضافيًا من type(x) is bool.
Qهل يمكن أن تكون الوسيطة الثانية أنواعًا متعددة؟
Aنعم، مرّر صفًّا: isinstance(x, (int, float)) يُرجع True إذا تحقق أي منها؛ إذا لم تكن classinfo نوعًا أو صف أنواع يُثار TypeError.
Qهل يمكن لـ isinstance فحص الواجهات/الأنواع المجردة؟
Aنعم، يمكن فحص الأصناف الأساسية المجردة، مثل isinstance(x, Iterable) أو isinstance(x, collections.abc.Sequence) — أكثر متانة من فحص نوع محدد.