اكتب () و isinstance () في Python مع الأمثلة

⚡ ملخص ذكي

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

  • 🔍 يكتب(): يُرجع الفئة الدقيقة للكائن، مثل str أو int أو list.
  • isinstance(): يتحقق مما إذا كان الكائن نسخة من فئة معينة، ويعيد القيمة True أو False.
  • 🧩 النوع ذو ثلاثة وسائط: تقوم الدالة type(name, bases, dict) بإنشاء كائن فئة جديد تمامًا بشكل ديناميكي.
  • 🌳 الفئات الفرعية: تُرجع الدالة isinstance() القيمة True للفئات الفرعية؛ بينما تتحقق الدالة type() من الفئة المحددة فقط.
  • 🎯 استخدم حالات: التحقق من صحة أنواع المدخلات، وتصحيح المتغيرات، ومنطق التفرع حسب نوع الكائن.
  • 🤖 مساعدة الذكاء الاصطناعي: تقوم أدوات الذكاء الاصطناعي مثل Copilot بإنشاء عمليات التحقق من النوع (type()) والنوع (isinstance()) عند الطلب.

اكتب () و isinstance () في Python

ما هو النوع () في Python?

Python يحتوي على وظيفة مدمجة تسمى type() تساعدك في العثور على نوع فئة المتغير المحدد كمدخل. على سبيل المثال، إذا كان الإدخال عبارة عن سلسلة، فستحصل على الإخراج كـ ، بالنسبة للقائمة، سيكون ، إلخ.

باستخدام أمر type()، يمكنك تمرير وسيطة واحدة، وستكون قيمة الإرجاع هي نوع فئة الوسيطة المقدمة، على سبيل المثال: type(object).

من الممكن أيضًا تمرير ثلاث وسائط إلى type()، أي type(name, bases, dict)، في مثل هذه الحالة، سيعيد لك كائن نوع جديد.

بناء الجملة للنوع ()

يمكن استخدام type() بطريقتين كما هو موضح أدناه:

 type(object)
type(namr, bases, dict)

المعاملات: النوع (الكائن)

  • الكائن: هذه معلمة إلزامية. إذا كانت هذه المعلمة فقط تم تمريرها إلى type()، فسوف تُرجع لك نوع المعلمة.

المعاملات: النوع (الاسم، القواعد، الإملاء)

  • الاسم: اسم الفصل.
  • القواعد: (اختياري). هذه معلمة اختيارية، وهي الفئة الأساسية
  • الإملاء: (اختياري). هذه معلمة اختيارية، وهي عبارة عن مساحة اسم تحتوي على تعريف الفئة.

قيمة الإرجاع

إذا كان الكائن هو المعلمة الوحيدة التي تم تمريرها إلى type() فسوف يُرجع لك نوع الكائن.

إذا كانت المعلمات التي تم تمريرها إلى النوع هي نوع (object, bases, dict)، في مثل هذه الحالة، فسوف تُرجع نوعًا جديدًا من الكائنات.

مثال على النوع()

في هذا المثال لدينا قيمة سلسلة، ورقم، وقيمة عائمة، ورقم مركب، وقائمة، ومجموعتين، وقاموس، ومجموعة. سنستخدم المتغيرات التي تحمل النوع لرؤية الناتج لكل منها.

str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}

print("The type is : ",type(str_list))
print("The type is : ",type(age))
print("The type is : ",type(pi))
print("The type is : ",type(c_num))
print("The type is : ",type(my_list))
print("The type is : ",type(my_tuple))
print("The type is : ",type(my_dict))
print("The type is : ",type(my_set))

الإخراج:

The type is :<class 'str'>
The type is :<class 'int'>
The type is :<class 'float'>
The type is :<class 'complex'>
The type is :<class 'list'>
The type is :<class 'tuple'>
The type is :<class 'dict'>
The type is :<class 'set'>

مثال: استخدام type() لكائن الفئة.

عند التحقق من الكائن الذي تم إنشاؤه من فئة باستخدام type()، فإنه يُرجع نوع الفئة مع اسم الفئة. في هذا المثال، سنقوم بإنشاء فئة والتحقق من نوع الكائن الذي تم إنشاؤه من اختبار الفئة.

class test:
    s = 'testing'

t = test()
print(type(t))

الإخراج:

<class '__main__.test'>

مثال: استخدام الاسم والقواعد والإملاء في النوع ()

يمكن أيضًا استدعاء النوع باستخدام بناء الجملة: type(name, bases, dict).

المعلمات الثلاثة التي تم تمريرها إلى type() ie والاسم والقواعد والإملاء هي المكونات التي تشكل تعريف الفئة. يمثل الاسم اسم الفئة، والأساسات هي الفئة الأساسية، وdict هو قاموس سمات الفئة الأساسية.

في هذا المثال، سنستخدم جميع المعلمات الثلاثة، أي الاسم والقواعد والإملاء في النوع ().

على سبيل المثال:

class MyClass:
  x = 'Hello World'
  y = 50

t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))

الإخراج:

<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}

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

ما هو المثيل () في Python?

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

بناء الجملة هو مثيل ()

isinstance(object, classtype)

المعاملات

  • الكائن: هو الكائن الذي تقوم بمقارنة مثيله بنوع الفئة. وسوف يعود بقيمة true إذا كان النوع يتطابق مع القيمة false.
  • نوع الفصل: نوع أو فئة أو مجموعة من الأنواع و/أو الفئات.

قيمة الإرجاع

سيعود صحيحًا إذا كان الكائن مثيلًا لنوع الفئة وخطأ إذا لم يكن كذلك.

أمثلة على isinstance()

سندرس في هذا القسم أمثلة مختلفة لتعلم isinstance()

مثال: isinstance() التحقق من العدد الصحيح

يقوم الكود أدناه بمقارنة القيمة الصحيحة 51 مع النوع int. وسوف يعيد القيمة true إذا كان النوع 51 يتطابق مع int وإلا فسوف يعيد القيمة false.

age = isinstance(51,int)
print("age is an integer:", age)

الإخراج:

age is an integer: True

مثال: isinstance() فحص عائم

في هذا المثال، سنقوم بمقارنة القيمة العائمة مع النوع float، أي أن القيمة 3.14 سيتم مقارنتها بالنوع float.

pi = isinstance(3.14,float)
print("pi is a float:", pi)

الإخراج:

pi is a float: True

مثال: isinstance() فحص السلسلة

message = isinstance("Hello World",str)
print("message is a string:", message)

الإخراج:

message is a string: True

مثال: isinstance() Tuple check

يتحقق الكود من وجود صف (1,2,3,4,5،XNUMX،XNUMX،XNUMX،XNUMX) مع نوع الصف. سيعود صحيحًا إذا كان الإدخال المقدم من النوع Tuple وخطأ إذا لم يكن كذلك.

my_tuple = isinstance((1,2,3,4,5),tuple)
print("my_tuple is a tuple:", my_tuple)

الإخراج:

my_tuple is a tuple: True

مثال: isinstance() قم بتعيين الاختيار

يتحقق الرمز من وجود مجموعة ({1,2,3,4,5}، مع مجموعة النوع. وسيعود صحيحًا إذا كان الإدخال المقدم من مجموعة النوع وخطأ إذا لم يكن كذلك.

my_set = isinstance({1,2,3,4,5},set)
print("my_set is a set:", my_set)

الإخراج:

my_set is a set: True

مثال: التحقق من قائمة isinstance()

يتحقق الكود من القائمة [1,2,3,4,5،XNUMX،XNUMX،XNUMX،XNUMX]، مع قائمة النوع. سيعود صحيحًا إذا كان الإدخال المقدم من قائمة النوع وخطأ إذا لم يكن كذلك.

my_list = isinstance([1,2,3,4,5],list)
print("my_list is a list:", my_list)

الإخراج:

my_list is a list: True

على سبيل المثال: isinstance() dict check

يتحقق الكود من وجود dict({"A":"a", "B":"b", "C":"c, "D":"d"}، بنوع dict. وسيعود صحيحًا إذا الإدخال المقدم من النوع dict وfalse إذا لم يكن كذلك.

my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"},dict)
print("my_dict is a dict:", my_dict)

الإخراج:

my_dict is a dict: True

مثال: اختبار isinstance() على الفصل الدراسي

يعرض الكود فحص نوع الفئة باستخدام isinstance() . تتم مقارنة كائن الفئة باسم الفئة داخل isinstance() . ويعيد true إذا كان الكائن ينتمي إلى الفئة وfalse بخلاف ذلك.

class MyClass:
    _message = "Hello World"

_class = MyClass()

print("_class is a instance of MyClass() : ", isinstance(_class,MyClass))

الإخراج:

_class is a instance of MyClass() True

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

يكتب() isinstance ()
Python يحتوي على وظيفة مدمجة تسمى type() تساعدك في العثور على نوع فئة المتغير المحدد كمدخل. Python تحتوي على دالة مدمجة تسمى isinstance() والتي تقارن القيمة بالنوع المحدد. إذا تطابقت القيمة والنوع المحددين فسوف تعود القيمة true وإلا فسوف تعود القيمة false.
القيمة المرجعة هي كائن كتابة القيمة المرجعة هي قيمة منطقية، أي صواب أو خطأ.
class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(type(A()) == A)
print(type(B()) == A)

الإخراج:

True
False

في حالة النوع، فإن فحص الفئة الفرعية يعطي خطأ.

class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(isinstance(A(), A))
print(isinstance(B(), A))

الإخراج:

True
True

يعطي isinstance() قيمة صحيحة عند التحقق من فئة فرعية.

الأسئلة الشائعة

الدالة type() هي دالة مدمجة تُعيد نوع الكائن. عند تمرير وسيط واحد إليها، تُعطي نوع الكائن؛ وعند تمرير ثلاثة وسائط (الاسم، والقواعد، والقاموس)، تُنشئ فئة جديدة.

تتحقق الدالة isinstance(object, classtype) مما إذا كان الكائن نسخة من فئة أو مجموعة من الفئات. وتعيد القيمة True إذا تطابق النوع، وFalse في غير ذلك.

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

نعم. استدعاء الدالة type(name, bases, dict) بثلاثة وسائط يُعيد كائن فئة جديد ديناميكيًا. name هو اسم الفئة، وbases عبارة عن مجموعة من العناصر الأصلية، وdict يحتوي على السمات.

نعم، تُرجع الدالة isinstance() القيمة True عندما يكون الكائن نسخةً من فئة أو أيٍّ من فئاتها الفرعية. وهذا يجعلها أكثر أمانًا من الدالة type() للتحقق من الأنواع الموروثة.

تُكمل المساعدات الذكية مثل GitHub Copilot تلقائيًا عمليات التحقق من النوع (type()) و isinstance()، وتُنشئ حراس التحقق، وتقترح النهج الصحيح لكائن معين أثناء كتابتك. Python.

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

تُعيد الدالة type() كائن الفئة للقيمة: list للقوائم و dict للقواميس. يُظهر طباعتها شكلاً مثل class list أو class dict.

تلخيص هذه التدوينة بـ: