تعدد الأشكال والكتابة بأسلوب البطة
اكتب شيفرة متعددة الأشكال تعمل مع أي كائن متوافق
تعدد الأشكال والكتابة بأسلوب البطة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
مقدمة
ما تعدد الأشكال؟
class Cat:
def speak(self): return 'Meow'
class Dog:
def speak(self): return 'Woof'
for animal in [Cat(), Dog()]:
print(animal.speak())Duck Typing
class Duck:
def quack(self): return 'Quack'
class Person:
def quack(self): return 'I am quacking like a duck'
def make_it_quack(duck):
print(duck.quack())
make_it_quack(Duck())
make_it_quack(Person())الدوال متعددة الأشكال
for obj in ['hello', [1,2,3], {'a':1}]:
print(type(obj).__name__, len(obj))التحميل الزائد للعوامل
print(1 + 2) # int addition
print('a' + 'b') # string concat
print([1] + [2]) # list concatDuck Typing القائم على البروتوكول
class Squares:
def __init__(self, n): self.n,self.i=n,0
def __iter__(self): return self
def __next__(self):
if self.i>=self.n: raise StopIteration
x=self.i**2; self.i+=1; return x
print(list(Squares(5)))EAFP مقابل LBYL
# LBYL:
if hasattr(obj, 'quack'):
obj.quack()
# EAFP (Pythonic):
try:
'hello'.quack()
except AttributeError:
print('no quack')isinstance() للتوزيع الآمن
def process(data):
if isinstance(data, str):
return data.upper()
elif isinstance(data, list):
return [x*2 for x in data]
print(process('hi'))
print(process([1,2,3]))الفئات الأساسية المجردة كبروتوكولات
from abc import ABC, abstractmethod
class Drawable(ABC):
@abstractmethod
def draw(self): pass
class Circle(Drawable):
def draw(self): print('O')
Circle().draw()typing.Protocol (3.8 فأحدث)
from typing import Protocol
class Quackable(Protocol):
def quack(self) -> str: ...
def make_quack(x: Quackable) -> str:
return x.quack()
print('protocol demo')تعدد الأشكال عمليًا
class JSONSerializer:
def serialize(self, obj): import json; return json.dumps(obj)
class XMLSerializer:
def serialize(self, obj): return f'<data>{obj}</data>'
def export(data, serializer):
return serializer.serialize(data)
print(export({'x': 1}, JSONSerializer()))تحقق سريع
مراجعة
واصل التقدم
الأسئلة الشائعة
هل درس «تعدد الأشكال والكتابة بأسلوب البطة» مجاني؟
نعم — نص درس «تعدد الأشكال والكتابة بأسلوب البطة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «تعدد الأشكال والكتابة بأسلوب البطة»؟
اكتب شيفرة متعددة الأشكال تعمل مع أي كائن متوافق تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تعدد الأشكال والكتابة بأسلوب البطة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الوراثة الأحادية
- تجاوز الطرق وsuper()
- الوراثة المتعددة وMRO
- تعدد الأشكال والكتابة بأسلوب البطة