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".
ورقة مرجعية
الـ class هو مخطط يحدد السمات والسلوكيات المشتركة. أما الـ object فهو نسخة تم إنشاؤها من ذلك الـ class بخصائص فردية.
تعريف class:
class Dog:
# سمة الـ Class - مشتركة بين جميع النسخ
species = "Canis familiaris"الوصول إلى سمات الـ class مباشرة:
print(Dog.species) # Canis familiarisإنشاء objects من class:
dog1 = Dog()
dog2 = Dog()إضافة سمات فردية إلى الـ objects:
dog1.name = "Nicky"
dog1.breed = "Siberian Husky"
dog2.name = "Teemon"
dog2.breed = "Shu'ali"يمكن للـ objects الوصول إلى كل من سماتها الفردية وسمات الـ class:
print(f"{dog1.name} is a {dog1.breed}") # سمات فردية
print(f"Species: {Dog.species}") # سمة الـ Classجرّب بنفسك
# استيراد فئة الطالب (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الأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكال