בדוגמא הראשונה שבא רואים את השימוש ב super במחברת, השימוש בה הוא כדי לשנות את רשימת הפרמטרים של הפוצקיה init המקורית של מחלקת Song. לכן גם יש העברת אגרומנטים.
נניח ואני לא מעוניין לשנות את מספר האגרומנטים, אלא רק להוסיף לתת המחלקה attribute.
האם ניתן להשתמש בפונצקיה בצורה כזו?
class Instrumental(Song):
def init(self):
Super.init()
self.is_good = True
או שזה לא יעבוד כי אני חייב איכשהו להעביר את הפרמטרים?
orpazf
אתה חייב להעביר ל-Song.__init__ את הארגומנטים שהיא דורשת. אם המחלקה שלך מקבלת את כל הארגומנטים האלה ועוד ארגומנטים, אין שום בעיה עם לקרוא ל-super על הארגומנטים המשותפים ואז להגדיר את השאר בעצמך, כפי שעשית עם self.is_good
לייק 1
of313
ובשורה לפני כן def __init__(self)
חייבים גם את כל הארגומנטים? מרגיש לי כפילות
orpazf
חייבים, אחרת איך נדע מה הם?
of313
הגיוני, אבל מרגיש מוזר.
כי עבור תת מחלקה שמה שמבדיל אותה ממחלקת האב היא מתודה נוספת - לא צריך לדרוס את init. ישר כותבים את הפונצקיה הנוספת (כמו אקרוסטיכון).
אבל בשביל עוד attribute צריך להגדיר מחדש הכל בפונצקיית ה init… סיזיפי משהו, לא?
orpazf
למה להגדיר הכול מחדש? לבצע קריאה אחת ל-super עם כל הארגומנטים - שורה אחת ולא הרבה, ואז להוסיף רק את המידע החדש