امتحان Python 5: الفئات، الكائنات، والتعامل مع الملفات (10 تمارين مركبة)
امتحان Python 5: البرمجة كائنية التوجه والملفات
اختبر مهاراتك في بناء هيكلية برمجية قوية باستخدام الفئات والوراثة، بالإضافة إلى قراءة وكتابة الملفات.
تمرين 1
إنشاء فئة (Create a Class)
أنشئ فئة بسيطة:
- عرف فئة باسم `MyClass`.
- تحتوي على خاصية `x = 5`.
- أنشئ كائناً `p1` من هذه الفئة واطبع قيمة `x`.
الحل
class MyClass:
x = 5
p1 = MyClass()
print(p1.x)
تمرين 2
دالة __init__
استخدم دالة البناء:
- عرف فئة `Person` مع دالة `__init__`.
- تأخذ الدالة `name` و `age`.
- أنشئ كائناً باسم "John" وعمر 36.
- اطبع الاسم والعمر.
الحل
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
تمرين 3
دوال الكائن (Object Methods)
أضف وظائف للفئة:
- في فئة `Person`، أضف دالة `myfunc`.
- تطبع الدالة "Hello my name is " متبوعاً بالاسم.
- استدعِ الدالة من الكائن `p1`.
الحل
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
تمرين 4
المعامل Self
فهم المعامل `self`:
- هل يجب تسمية المعامل الأول بـ `self` دائماً؟
- جرب تغيير اسمه إلى `mysillyobject` في دالة `myfunc` وتأكد أنها تعمل.
الحل
# نعم، يمكن تغيير الاسم، لكن يجب أن يكون أول معامل.
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
تمرين 5
الوراثة (Inheritance)
أنشئ فئة فرعية:
- عرف فئة `Student` ترث من `Person`.
- لا تضف أي خصائص جديدة (استخدم `pass`).
- أنشئ كائناً من `Student` واستخدم خصائص `Person`.
الحل
class Student(Person):
pass
x = Student("Mike", 24)
x.myfunc()
تمرين 6
إضافة خصائص للابن
خصص الفئة الفرعية:
- في فئة `Student`، أضف `__init__`.
- استخدم `super().__init__(name, age)` للحفاظ على وراثة الأب.
- أضف خاصية جديدة `graduationyear`.
الحل
class Student(Person):
def __init__(self, name, age, year):
super().__init__(name, age)
self.graduationyear = year
x = Student("Mike", 24, 2019)
print(x.graduationyear)
تمرين 7
المكررات (Iterators)
أنشئ مكرراً:
- لديك صف `mytuple = ("apple", "banana", "cherry")`.
- احصل على المكرر باستخدام `iter()`.
- اطبع العنصر التالي باستخدام `next()`.
الحل
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
تمرين 8
فتح الملفات (File Open)
اقرأ ملفاً نصياً:
- افتح ملف `demofile.txt` للقراءة (`"r"`).
- اطبع محتواه باستخدام `read()`.
الحل
f = open("demofile.txt", "r")
print(f.read())
تمرين 9
الكتابة في الملفات (File Write)
أضف محتوى لملف:
- افتح ملف `demofile2.txt` للإضافة (`"a"`).
- اكتب "Now the file has more content!".
- أغلق الملف.
الحل
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()
تمرين 10
حذف الملفات (Delete File)
احذف ملفاً من النظام:
- استورد وحدة `os`.
- تحقق مما إذا كان الملف `demofile.txt` موجوداً.
- إذا كان موجوداً، احذفه باستخدام `os.remove()`.
الحل
import os
if os.path.exists("demofile.txt"):
os.remove("demofile.txt")
else:
print("The file does not exist")