بايثون طريقة تعريف كلاس مجرد يرث من كلاس مجرد

في المثال التالي قمنا بتعريف كلاس مجرّد إسمه A وضعنا فيه دالة مجرّدة إسمها m1.
بعدها قمنا بتعريف كلاس مجرّد إسمه B يرث من الكلاس A و وضعنا فيه دالة مجرّدة إسمها m2.
بعدها قمنا بتعريف كلاس عادي إسمه C يرث من الكلاس B و يفعل Override للدالتين m1() و m2().
في الأخير قمنا بإنشاء كائن من الكلاس C و استدعاء كلا الدالتين منه.

مثال

A.py
# حتى نستطيع استخدامهما abc الموجودين في الموديول @abstractmethod و الكلمة ABC هنا قمنا بتضمين الكلاس
from abc import ABC, abstractmethod


# حتى يصبح كلاس مجرّد ABC و جعلناه يرث من الكلاس A هنا قمنا بإنشاء كلاس إسمه
class A(ABC):

    # m1 هنا قمنا بتعريف دالة مجردة و فارغة إسمها
    @abstractmethod
    def m1(self):
        pass
		

B.py
# حتى نستطيع الوراثة منه A حتى نستطيع تعريف دالة مجرّدة + الكلاس @abstractmethod هنا قما بتضمين الكلمة
from abc import abstractmethod
from A import A


# m1() حتى يصبح كلاس مجرّد و يحتوي على الدالة ABC الذي بدوره يرث من الكلاس A و جعلناه يرث من الكلاس B هنا قمنا بإنشاء كلاس إسمه
class B(A):

    # m2 هنا قمنا بتعريف دالة مجردة و فارغة إسمها
    @abstractmethod
    def m2(self):
        pass

    # أيضاَ A من الكلاس m1() ورث الدالة المجردة B لا تنسى أن الكلاس
		

C.py
# حتى نستطيع الوراثة منه B.py الموجود في الملف B هنا قمنا بتضمين الكلاس
from B import B


# لجميع الدوال المجرّردة التي ورثها Override و بالتالي أصبح هذا الكلاس مجبراً على أن يفعل B يرث من الكلاس C هنا قمنا بتعريف كلاس إسمه
class C(B):

	# m1() للدالة Override هنا فعلنا
    def m1(self):
        print('m1 content is written in the class c')

	# m2() للدالة Override هنا فعلنا
    def m2(self):
        print('m2 content is written in the class c')
		

Test.py
# حتى نستطيع إنشاء كائن منه ChildClass هنا قمنا بتضمين الكلاس
from C import C


# obj إسمه C هنا قمنا بإنشاء كائن من الكلاس
obj = C()

# obj هنا قمنا باستدعاء كلا الدالتين الموجودتين في الكائن
obj.m1()
obj.m2()
		

سنحصل على النتيجة التالية عند تشغيل الملف Test.

m1 content is written in the class c
m2 content is written in the class c

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة