استخدام دالة isinstance() للتحقق من نوع البيانات في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 19 ديسمبر 2024

محتوى المقال

استخدام دالة isinstance() للتحقق من نوع البيانات في Python

في لغة Python، قد تحتاج أحيانًا إلى التحقق مما إذا كان كائن معين ينتمي إلى نوع بيانات محدد قبل العمل عليه. دالة isinstance() توفر لك طريقة سهلة ومرنة للتحقق من نوع البيانات للكائنات في Python. في هذا المقال، سنتعرف على كيفية استخدام isinstance() مع أمثلة توضيحية.

ما هي دالة isinstance()؟

دالة isinstance() هي دالة مدمجة في Python تُستخدم للتحقق مما إذا كان كائن معين ينتمي إلى نوع بيانات محدد أو أحد الأنواع الفرعية لهذا النوع. إذا كان الكائن ينتمي إلى النوع المحدد، فإن الدالة تُرجع True، وإلا فإنها تُرجع False.

الصيغة العامة لدالة isinstance()

الصيغة العامة لاستخدام isinstance() هي كما يلي:

isinstance(object, classinfo)

حيث:

  • object: الكائن الذي تريد التحقق من نوعه.
  • classinfo: نوع البيانات (أو مجموعة من الأنواع) التي تريد التحقق مما إذا كان الكائن ينتمي إليها.

أمثلة على استخدام isinstance()

مثال بسيط: التحقق من نوع البيانات

إليك مثالًا بسيطًا للتحقق مما إذا كان كائن معين هو عدد صحيح (int):

x = 10
if isinstance(x, int):
    print("x هو عدد صحيح")
else:
    print("x ليس عددًا صحيحًا")

الناتج سيكون:

  • x هو عدد صحيح

في هذا المثال، يتم التحقق من أن x هو عدد صحيح باستخدام isinstance().

التحقق من أنواع متعددة

يمكن لدالة isinstance() أيضًا التحقق مما إذا كان الكائن ينتمي إلى أكثر من نوع واحد. يمكنك تمرير مجموعة من الأنواع (مثل tuple) كمعامل ثاني.

x = 10.5
if isinstance(x, (int, float)):
    print("x هو عدد")
else:
    print("x ليس عددًا")

الناتج سيكون:

  • x هو عدد

في هذا المثال، يتم التحقق مما إذا كان x هو عدد صحيح أو عدد عشري باستخدام isinstance().

استخدام isinstance() مع الكائنات المخصصة (Classes)

بالإضافة إلى أنواع البيانات المدمجة مثل int و float، يمكنك استخدام isinstance() للتحقق مما إذا كان كائن ينتمي إلى فئة مخصصة (Class). إليك مثالًا:

class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()
if isinstance(dog, Animal):
    print("dog هو حيوان")

الناتج سيكون:

  • dog هو حيوان

في هذا المثال، تم التحقق مما إذا كان dog كائنًا ينتمي إلى الفئة Animal باستخدام isinstance()، على الرغم من أن dog هو كائن من الفئة الفرعية Dog التي ترث من Animal.

لماذا نستخدم isinstance()؟

إليك بعض الأسباب التي تجعل استخدام isinstance() مفيدًا في البرمجة:

  • التأكد من نوع البيانات: يمكن أن يساعد في تجنب الأخطاء الناتجة عن التعامل مع بيانات من أنواع غير صحيحة.
  • التحقق من الوراثة: يمكنه التحقق مما إذا كان الكائن ينتمي إلى نوع رئيسي أو نوع فرعي.
  • دعم تعدد الأنواع: يسمح بالتحقق مما إذا كان الكائن ينتمي إلى أكثر من نوع.
  • تجنب الأخطاء: يعد وسيلة ممتازة للتحقق من صحة المدخلات في الدوال.

مثال عملي على استخدام isinstance() في التحقق من المدخلات

إليك مثال على كيفية استخدام isinstance() للتحقق من نوع مدخلات دالة:

def calculate_square(number):
    if isinstance(number, int):
        return number ** 2
    else:
        return "المدخل ليس عددًا صحيحًا"

print(calculate_square(4)) # 16
print(calculate_square("hello")) # المدخل ليس عددًا صحيحًا

في هذا المثال، تم استخدام isinstance() للتحقق من أن المدخل هو عدد صحيح قبل تنفيذ العملية عليه.

الفرق بين isinstance() و type()

على الرغم من أن دالة type() تُستخدم أيضًا للتحقق من نوع البيانات، فإن isinstance() تُعتبر أفضل في العديد من الحالات. السبب في ذلك هو أن isinstance() تأخذ في الاعتبار الوراثة بين الفئات، بينما type() تتحقق من النوع الدقيق فقط.

مثال يوضح الفرق بين isinstance() و type()

class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()
print(isinstance(dog, Animal)) # True
print(type(dog) == Animal) # False

في هذا المثال، isinstance() تُرجع True لأن Dog ترث من Animal، بينما type() تُرجع False لأن النوع الدقيق لـ dog هو Dog وليس Animal.

الخلاصة

دالة isinstance() هي أداة قوية ومرنة للتحقق من نوع البيانات في Python. سواء كنت تعمل مع الأنواع المدمجة أو الفئات المخصصة، فإن isinstance() توفر لك وسيلة بسيطة وآمنة للتحقق من أنواع الكائنات. يمكنك استخدامها للتحقق من صحة المدخلات، معالجة الوراثة بين الفئات، والعمل مع بيانات متعددة الأنواع بكفاءة.

طور مهاراتك: مقالات يجب قراءتها في البرمجة