בלבול כללי בנושא המחלקות/ירושה

תגיות:

היי, אני חושב שיש לי חוסר הבנה בסיסי בנוגע למחלקות ואני לא יודע בדיוק איפה למצוא פתרון לכך.
בכמה תרגילים אני מרגיש שאני נדרש ליצור מופע במחלקה מסויימת על פי השם שלו בלבד, ואחר כך לגשת אליו מבחוץ.
בתרגיל הדרדסים לדוגמא, דרדשף צריך ליצור בפעולה create_food מופע חדש מן המחלה Dish, אך כיצד אפשר לגשת אליו אחר כך?
בתרגיל המאפיה אני מרגיש שאני נתקל בבעיה דומה, כאשר משתמש מתווסף למשחק באמצעות הפעולה add_player, כאשר הפרמטר שמועבר לה הוא שם השחקן. אז נניח שיש לנו class של Player, שיש לו את התכונה name. כיצד אפשר לקרוא למופע של המחלקה באמצעות תכונה שלו?

אשמח לעזרה/הבהרה איזה חלק מהפאזל חסר לי כדי להבין הכול…
תודה מראש :slight_smile:

הבעיות שאתה מציג דווקא לא מדברות על ירושות אז אני יכול להרגיע אותך (:

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

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

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

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

במקרים כאלה כדאי לעשות פונקציית עזר. אין דרך לעשות self.name in players במקרים כאלה צריך מעט להתאמץ (:

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

לייק 1

לגבי השאלה שלך על המאפיה, כשאתה מעביר שם כתכונה של מופע, אתה לא תוכל דרכו להגיע למופע.
לדוגמה, אם העברת player.name לפעולה add_player, הtype שיקבל יהיה string ולא מופע.
תנסה לחשוב איך תגרום לכך שלמרות שאתה מעביר שם, עדין תיווצר לך מופע.
[רמז: תחשוב איפה כדאי לך ליצור את המופע]

לייק 1