ירושה בסיסית
חלק מהיחידה תכנות מונחה עצמים במסלול ה-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): כדי ליצור ירושה. כך תוכלו לעשות שימוש חוזר בקוד וליצור היררכיות מחלקות הגיוניות.
אתגר
בינוניvehicle.py: מכיל את מחלקת האבVehiclecar.py: מכיל את המחלקהCarשיורשת מ־Vehicledriver.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 ללא שינויהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםהפרמטר selfמתודותמאפייניםשיטת הבנאי (__init__)חזרה: מחשבון פשוט5פולימורפיזם
בחינה מחדש של דריסת מתודותטיפוסיות ברווזמחלקות ומתודות אבסטרקטיותעיצוב ממשקיםסיכום – מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה לעומת הורשהMixinsמתודות סטטיות ומתודות מחלקהדקורטורים למחלקותמנהלי הקשרתרגלו בעצמכם: קומפיילר Python אונליין