تعدد الأشكال
استكشف كيف يتيح تعدد الأشكال كتابة شيفرة مرنة وديناميكية
تعدد الأشكال درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 6. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 6 دروس في المجموع.
مقدمة إلى تعدد الأشكال
مقدمة إلى تعدد الأشكال
تعدد الأشكال مفهوم أساسي في البرمجة كائنية التوجه (OOP)، ويسمح بالتعامل مع كائنات من فئات مختلفة على أنها كائنات من فئة أساسية مشتركة. ويوفر المرونة وقابلية إعادة الاستخدام في الشفرة.
في هذا الدرس، ستتعلم كيفية تطبيق تعدد الأشكال في Python باستخدام الأساليب والفئات.

ما تعدد الأشكال؟
ما تعدد الأشكال؟
يسمح تعدد الأشكال للأساليب في الفئات المختلفة بحمل الاسم نفسه مع اختلاف سلوكها. ويجعل الشفرة أكثر مرونة وأسهل في التوسعة.
# Defining a superclass
class Animal:
# Method in the superclass
def speak(self):
print("Animal speaks") # Generic message for all animals
# Defining a subclass that overrides the speak method
class Dog(Animal):
def speak(self):
print("Dog barks") # Specific behavior for Dogتعدد الأشكال باستخدام الأساليب
تعدد الأشكال باستخدام الأساليب
يمكن للأساليب التي تحمل الاسم نفسه في فئات مختلفة توفير تطبيقات مختلفة.
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsمثال على تعدد الأشكال باستخدام الأساليب
تعدد الأشكال باستخدام الأساليب
يمكن للأساليب التي تحمل الاسم نفسه في فئات مختلفة توفير تطبيقات مختلفة.
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsتعدد الأشكال باستخدام الدوال
تعدد الأشكال باستخدام الدوال
يسمح تعدد الأشكال للدالة نفسها بالعمل على أنواع مختلفة من الكائنات.
# Defining two unrelated classes
class Bird:
def fly(self):
print("Bird flies") # Behavior specific to birds
class Plane:
def fly(self):
print("Plane flies") # Behavior specific to planes
# Function demonstrating polymorphism
# It can accept objects of both Bird and Plane
def flying_object(obj):
obj.fly() # Calls the appropriate fly method based on the object type
# Creating objects of Bird and Plane
bird = Bird()
plane = Plane()
# Calling the function with different objects
flying_object(bird) # Outputs: Bird flies
flying_object(plane) # Outputs: Plane fliesتعدد الأشكال باستخدام الوراثة
تعدد الأشكال باستخدام الوراثة
غالبًا ما يتحقق تعدد الأشكال من خلال الوراثة، حيث تتجاوز الفئات الفرعية أساليب الفئة الأساسية.
# Superclass representing a generic vehicle
class Vehicle:
def start(self):
print("Vehicle starts") # Generic behavior for all vehicles
# Subclass representing a specific type of vehicle
class Car(Vehicle):
def start(self):
print("Car starts") # Specific behavior for cars
# Subclass representing another specific type of vehicle
class Bike(Vehicle):
def start(self):
print("Bike starts") # Specific behavior for bikes
# Function demonstrating polymorphism
# It can accept objects of any subclass of Vehicle
def start_vehicle(vehicle):
vehicle.start() # Calls the appropriate start method based on the object type
# Creating objects of Car and Bike
car = Car()
bike = Bike()
# Calling the function with different objects
start_vehicle(car) # Outputs: Car starts
start_vehicle(bike) # Outputs: Bike startsمزايا تعدد الأشكال
مزايا تعدد الأشكال
يوفر تعدد الأشكال عدة فوائد:
- إمكانية إعادة استخدام الشفرة ومرونتها.
- تحسين قابلية قراءة الشفرة وتنظيمها.
- تشجيع استخدام الواجهات المشتركة.
مثال من العالم الحقيقي
مثال من العالم الحقيقي
إليك مثالًا من العالم الحقيقي باستخدام تعدد الأشكال.
# Real-world example of polymorphism
class Developer:
def work(self):
print("Writing code") # Specific task for developers
class Designer:
def work(self):
print("Designing user interfaces") # Specific task for designers
# Function demonstrating polymorphism
# It can accept objects of both Developer and Designer
def workday(employee):
employee.work() # Calls the appropriate work method based on the object type
# Creating objects of Developer and Designer
developer = Developer()
designer = Designer()
# Calling the function with different objects
workday(developer) # Outputs: Writing code
workday(designer) # Outputs: Designing user interfacesالأخطاء الشائعة عند استخدام تعدد الأشكال
الأخطاء الشائعة عند استخدام تعدد الأشكال
إليك بعض الأخطاء التي ينبغي تجنبها:
- نسيان تجاوز الأساليب في الفئات الفرعية عند الحاجة.
- الخلط بين ترتيب حل الأساليب (MRO) في الوراثة المتعددة.
- استخدام تعدد الأشكال دون حاجة في المهام البسيطة.
ماذا تعلمنا؟
ماذا تعلمنا؟
في هذا الدرس، تعلمت ما يلي:
- ما تعدد الأشكال وكيف يعمل في Python.
- كيفية تطبيق تعدد الأشكال باستخدام الأساليب والوراثة.
- مزايا استخدام تعدد الأشكال في البرمجة كائنية التوجه.
أحسنت! لننتقل إلى الموضوع التالي.

الأسئلة الشائعة
هل درس «تعدد الأشكال» مجاني؟
نعم — نص درس «تعدد الأشكال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 6 دروس في المجموع.
ماذا ستتعلم في «تعدد الأشكال»؟
استكشف كيف يتيح تعدد الأشكال كتابة شيفرة مرنة وديناميكية تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 6.
كم من الوقت يستغرق درس «تعدد الأشكال»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الفئات والكائنات
- السمات والطرق
- الوراثة
- تعدد الأشكال
- التغليف والتجريد
- الطرق السحرية (__str__ و__repr__ وما إلى ذلك)