אשמח לדעת למה מחלקת vehicle ומחלקת weapon יורשות ממחלקת object בצורה שבה זה כתוב כאן (כלומר עם הsuper().init())…
למה בעצם הן לא כתובות כמו מחלקות שעשינו עד עכשיו? האם יש יתרון/סיבה לכתיבה בצורה הזו? מה המחלקות האלה יורשות מobject כשכתבים ככה לעומת אחרת (אמרנו שבכל מקרה המחלקות “יורשות” ממחלקת אובייקט כברירת מחדל לא?)?
האם אפשר להגיד שMIXIN היא סוג של מחלקה מופשטת? בעצם אין לה מטרה בפני עצמה, לא אמורים ליצור ממנה מופעים, והיא משמשת רק כמחלקה שיורשים ממנה לא?
האם ההבדל בין שתיהן הוא רק ש"לרוב נעשה שימוש ביותר מ־Mixin אחת בעזרת ירושה מרובה"? או שההבדל נובע מזה שהמחלקות שיורשות ממחלקה מופשטת חייבות להשתמש בפעולות שלה?
לייק 1
yael7899
מצטרפת לשאלה בנושא
האם בדוגמא זו ה MIXIN – ים הם המחלקות Clickable, LargeRectangle?
ולמה כאן במחלקת button לא רשמנו את הפונקציית init ולא אתחלנו את הפונקציה עם הקריאה super(), כמו שעשינו עד כה?
מה שקרה במקרה הזה, זה בעצם שתי מחלקות שונות , שהיה צורך לחבר אותן, סתם צורך, אז פשוט יצרו מחלקה שלישית שכוללת את שתיהן יחדיו,
זה כמו שתי פונקציות, שבפונקציה אחת עושה חיבור והשניה כפל,
עכשיו לא מכובד ליצור פונקציה שתכלול בתוכה גם את הכפל וגם את החיבור, לכן יש פונקציה שלישית שתאחד אותן…
zurikarat
בעצם הMixIn זה מה שיוצרת מחלקת botton,
לא רשמנו super, init וכו’ כי אנחנו לא מעוניינים לשנות כלום במחלקות האב, וגם כי שתי המחלקות הנ’'ל אינן שייכות למחלקה ספציפית שתירש אותה (abc module etc…)
לייק 1
Yam
מה ההבדל ממחלקות שעשינו עד עכשיו? האם התשובה כאן עונה לך על השאלה?
כיוון שבקריאה ל־__init__ של Button הפונקציה “אוטומטית” תקרא ל־__init__ של מחלקת־העל (ה־super), זה מה שקורה כשלא דורסים פעולה של מחלקת־על בתת־המחלקה.
באחרות כן מימשנו כיוון שרצינו להוסיף דברים נוספים חוץ מהקריאה ל־__init__ של מחלקת־העל.