Menu
Coddy logo textTech

ירושה בסיסית

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 17 מתוך 64.

ירושה מאפשרת למחלקה לרשת מאפיינים ומתודות ממחלקה אחרת, וכך ליצור קשר של הורה וילד.

הנה דוגמה למחלקת אב:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def info(self):
        print(f"I am {self.name}, an animal")

צרו מחלקת בת שיורשת ממחלקת האב:

class Dog(Animal):
    pass  # יורשת הכול מ־Animal

התחביר class Dog(Animal): פירושו ש-Dog יורשת מ-Animal. יש לכתוב את שם מחלקת האב בסוגריים.

צרו אובייקטים משתי המחלקות:

generic_animal = Animal("Creature")
buddy = Dog("Buddy")

השתמשו בשיטות שעברו בירושה:

generic_animal.info()
buddy.info()

פלט:

I am Creature, an animal
I am Buddy, an animal

אף על פי ש-Dog לא מגדירה את __init__ או את info, היא מקבלת אותם אוטומטית מ-Animal.

אפשר להוסיף מתודות חדשות למחלקת הבת:

class Dog(Animal):
    def bark(self):
        print(f"{self.name} says Woof!")

buddy = Dog("Buddy")
buddy.info()  # מתודה בירושה
buddy.bark()  # מתודה חדשה

פלט:

I am Buddy, an animal
Buddy says Woof!

נקודה חשובה: מחלקות צאצא יורשות את כל התכונות והשיטות ממחלקת האב שלהן. השתמשו בתחביר class Child(Parent): כדי ליצור ירושה. כך תוכלו לעשות שימוש חוזר בקוד וליצור היררכיות מחלקות הגיוניות.

challenge icon

אתגר

בינוני
  • vehicle.py: מכיל את מחלקת האב Vehicle
  • car.py: מכיל את המחלקה Car שיורשת מ־Vehicle
  • driver.py: הקובץ הראשי לבדיקת המימוש שלך

כל קובץ מכיל הערות TODO מפורטות שינחו אותך במימוש. יהיה עליך:

  • להשלים את המחלקה Vehicle עם מאפייני יצרן ודגם
  • לממש ירושת מחלקות תקינה במחלקה Car
  • להגדיר את הצהרות הייבוא הנכונות בין הקבצים
  • ליצור ולבדוק אובייקטים בקובץ הנהג

פעל לפי הערות ה־TODO בקפידה, שכן הן מספקות הנחיות שלב אחר שלב לפתרון.

נסו בעצמכם

# TODO: ייבא את המחלקה Vehicle מתוך vehicle.py
# TODO: ייבא את המחלקה Car מתוך car.py

# TODO: צור אובייקט Vehicle עם make שערכו "Toyota" ו-model שערכו "Corolla"
vehicle = None

# TODO: צור אובייקט Car עם make שערכו "Honda" ו-model שערכו "Civic"
car = None

# TODO: קרא למתודה display_info() של האובייקט vehicle
# פלט צפוי: "Vehicle: Toyota Corolla"

# TODO: קרא למתודה display_info() של האובייקט car
# פלט צפוי: "Vehicle: Honda Civic"
# הערה: Car יורשת את display_info מ-Vehicle ללא שינוי
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Python אונליין