דרדסים - שאלה כללית על דריסה של פעולות במחלקה יורשת

בפעולה eat אני בודקת קודם כל האם המופע ישן.
הייתי רוצה לדרוס רק את החלק הזה בפעולה במחלקה היורשת של דרדס (דרדסבא).
איך אני עושה את זה?
מודה שלא הבנתי מההסברים במחברת איך בדיוק עובד super ולכן זה לא ברור לי.

לייק 1

בונה את הפעולה eat שוב במחלקת דרדסבא, תחת אותו השם. זה ידרוס את הפעולה במחלקת העל.

לייק 1

סבבה אבל אני רוצה שהיא תהיה זהה לחלוטין לפעולת eat של דרדס מלבד ה-if הראשון.
אין לי דרך לעשות את זה בלי כפילות קוד?

לייק 1

אני חושבת שהשאלה ממש ממש דומה לדוגמא של דריסה במחברת (זאת שמופיעה ממש ממש לפני התרגיל של הדרדסים)

לא חושב שאפשר.
כשמשתמשים בסופר, הפעולה מבוצעת במלואה.

שכאמור לא הבנתי…
בדוגמה קראו עם super לפונקצית str, אבל אז חוץ מלהעלות את מספר הפעמים שהשיר נקרא היא לא עשתה שום פעולה שהוגדרה שם ולא הבנתי איך.


יש מצב שהאשכול הזה יעזור לך בהתמודדות עם super?

2 לייקים

אני גם בהתחלה לא הבנתי את זה.
הפעולה בוצעה במלואה, אבל בסוף מה שהיה חשוב בפעולה היה רק התוספת של ה-view. אחר כך המשך הקוד רק תיקן את הערכים שהוגדרו בפעולת מחלקת העל.

האם זה בסדר פשוט להגדיר במקום זה שאם מי שקרה לפעולה הוא מסאבקלאס של דרדסבא אז זה בסדר? או שזה בעייתי?

תוכל לנסות ולראות :slight_smile:

כבר בדקתי את זה וזה עובד לי, השאלה אם זה בסדר מבחינת החומר כאילו… כי לא ביצעתי דריסה עם כתיבה מחדש של פונקציה

אתה מתכוון לתנאי שבודק isinstance ?

בדיוק, זה תנאי מאוד נוח לעבוד איתו עם סאבקלאסים

נראה לי שבשלב הזה יש מלא פתרונות אפשריים.
גם נראה לי שזה מתחיל להיות התפר הזה שבין הכלה לירושה - אתה צריך להחליט עד כמה אתה מוסיף / מסבך וכו’ את הפונקציות הכלליות ובמה אתה הולך לטפל כמקרים מיוחדים

בגדול אפשרי, מה שכן בתנאים שכאלה עדיף לבדוק אם זה אכן מוצא אחרון ואולי ״שינוי ארגוני״ יכול לפתור את זה.

כי אז כל זימון של פעולה כזו צריך לבדוק … אני כבר לא זוכר מה אני עשיתי אבל בכל מקרה למדנו וזה לגיטימי.

עשו לך קצת hijack על הנושא ואני רוצה לוודא שזה בסדר עכשיו :slight_smile:
הסתדרת?

זו כנראה השעה והיום הארוך אבל בעוד ברור לי שהשרשור על super מכיל את התשובה לבעיה שלי, אני לא מצליחה לממש אותה בלי סתם להוסיף שטויות לקוד ^^"
קיצר בסופו של דבר אסתדר ותודה רבה על המענה המהיר, כרגיל.