Classes مقابل Objects
جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 3 من 64.
تخدم الفئات (Classes) والكائنات (objects) أغراضاً مختلفة. الفئة هي مخطط، بينما الكائن هو ما تبنيه من ذلك المخطط.
إليك مثال على صنف (class):
class Dog:
# مشترك بين جميع الكلاب
species = "Canis familiaris"الآن يمكننا الوصول إلى سمة الفئة مباشرة باستخدام Dog.species حيث Dog هو اسم الفئة:
print(f"Class species: {Dog.species}")
# فصيلة الفئة: Canis familiarisيقوم هذا بالوصول إلى البيانات من الفئة نفسها، وليس من أي كائن محدد.
الآن دعنا نستكشف كيف يعمل ذلك في الكائنات. قم بإنشاء كائنات من فئة Dog:
dog1 = Dog()
dog2 = Dog()يمكن أن تمتلك الكائنات سمات فردية لا تمتلكها الفئات:
dog1.name = "Nicky"
dog1.breed = "Siberian Husky"
dog2.name = "Teemon"
dog2.breed = "Shu'ali"قارن بين ما يمكن أن تفعله الأصناف (classes) والكائنات (objects):
print(f"Object 1: {dog1.name} is a {dog1.breed}")
print(f"Object 2: {dog2.name} is a {dog2.breed}")
print(f"Both share class attribute: {Dog.species}")المخرجات:
Object 1: Nicky is a Siberian Husky
Object 2: Teemon is a Shu'ali
Both share class attribute: Canis familiarisالفرق الرئيسي: الفئة Dog تحدد ما تشترك فيه جميع الكلاب، بينما تمثل الكائنات dog1 و dog2 كلاباً محددة وفردية بخصائص فريدة.
التحدي
سهلأكمل الكود لإنشاء فئة Student وكائنين من نوع طالب. أضف أسماءً ودرجات مختلفة لكل طالب.
student.py: هذا هو المكان الذي ستحدد فيه فئةStudentالخاصة بك.driver.py: ملف التنفيذ الرئيسي الذي سيقوم باستيراد واستخدام فئة Student الخاصة بك:أكمل الكود لإنشاء فئة
Studentوكائنين من نوع طالب. أضف أسماءً ودرجات مختلفة لكل طالب.اسم student1 هو
"Alice"مع درجة"A".اسم student2 هو
"Bob"مع درجة"B".
جرّب بنفسك
# استيراد فئة الطالب (Student)
from student import Student
# TODO: إنشاء كائنين للطالب
# TODO: إضافة سمات للطالب الأول (student1)
# TODO: إضافة سمات للطالب الثاني (student2)
# طباعة معلومات الطالب
print(f"{student1.name} has grade {student1.grade} at {Student.school}")
print(f"{student2.name} has grade {student2.grade} at {Student.school}")يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكال