تجاوز الطرق وsuper()
تجاوز طرق الفئة الأصل واستدعها باستخدام super()
تجاوز الطرق وsuper() درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
مقدمة
أساسيات إعادة التعريف
class Greeter:
def greet(self): return 'Hello'
class FormalGreeter(Greeter):
def greet(self): return 'Good day'
print(FormalGreeter().greet())super() في الطرق المعاد تعريفها
class Logger:
def log(self, msg): print(f'[LOG] {msg}')
class TimedLogger(Logger):
def log(self, msg):
import time
super().log(f'{time.time():.0f}: {msg}')
TimedLogger().log('test')super() في __init__
class Animal:
def __init__(self, name): self.name = name
class Cat(Animal):
def __init__(self, name, indoor):
super().__init__(name)
self.indoor = indoor
cat = Cat('Whiskers', True)
print(cat.name, cat.indoor)super() مع الوسائط
class A:
def greet(self): return 'A'
class B(A):
def greet(self): return super().greet() + 'B'
class C(B):
def greet(self): return super().greet() + 'C'
print(C().greet())الوراثة التعاونية
class A:
def __init__(self): print('A init')
class B(A):
def __init__(self): super().__init__(); print('B init')
class C(A):
def __init__(self): super().__init__(); print('C init')
class D(B, C):
def __init__(self): super().__init__(); print('D init')
D()إعادة تعريف __str__
class Animal:
def __init__(self, name): self.name = name
def __str__(self): return f'Animal: {self.name}'
class Dog(Animal):
def __str__(self): return f'Dog: {self.name}'
print(Dog('Rex'))نمط طريقة القالب
class DataProcessor:
def process(self):
data = self.load()
return self.transform(data)
def load(self): return [1,2,3]
def transform(self, d): return d
class Doubler(DataProcessor):
def transform(self, d): return [x*2 for x in d]
print(Doubler().process())استدعاء طريقة فئة شقيقة
class A:
def hello(self): print('A')
class B(A):
def hello(self): super().hello(); print('B')
class C(A):
def hello(self): super().hello(); print('C')
class D(B,C):
def hello(self): super().hello(); print('D')
D().hello()__init_subclass__
class Plugin:
registry = []
def __init_subclass__(cls, **kw):
super().__init_subclass__(**kw)
Plugin.registry.append(cls)
class A(Plugin): pass
class B(Plugin): pass
print([c.__name__ for c in Plugin.registry])متى لا تعيد التعريف
# Good: only override what's needed
class Dog(Animal):
def speak(self): return 'Woof'
# No need to override __init__ if parent's is fine
print('override guidance')تحقق سريع
مراجعة
واصل التقدم
الأسئلة الشائعة
هل درس «تجاوز الطرق وsuper()» مجاني؟
نعم — نص درس «تجاوز الطرق وsuper()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «تجاوز الطرق وsuper()»؟
تجاوز طرق الفئة الأصل واستدعها باستخدام super() تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تجاوز الطرق وsuper()»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الوراثة الأحادية
- تجاوز الطرق وsuper()
- الوراثة المتعددة وMRO
- تعدد الأشكال والكتابة بأسلوب البطة