ואם תהיו טובים אולי תצליחו לראות את הדרדסים

תגיות:

כמה שאלות -
דרדסבא בgive_order מקבל פעולה וגם אינסטנס של דרדס ומפעיל את הפעולה על האינסטנס ?

לגבי האוכל :
הכוונה היא ליצור למשל משתנה גלובלי food שדרדשף מכניס לתוכו מנות וכמויות , וכל דרדס מקבל רשימה ואם אין מספיק כמויות בfood אז צריכים לבצע התאמה לכמויות בfood ?

והאם יש אפשרות להעביר dict לדרדס בפעולה eat (עם מנות וכמויות) במקום רשימה ?

נניח שיצרתי Smurf:

x = Smurf("Moshe")

דרדסאבא אמור לקבל את הפעולה כך:

y = PapaSmurf("Shlomke")
y.give_order(x.sleep)

לגבי האוכל – משאיר לך לפרשנות.
בד"כ לא מומלץ ליצור משתנים גלובליים, חשוב אולי על דרך אחרת :slight_smile:

2 לייקים

אשמח לחידוד קטן לגבי הפעולה שדרדרסבא מקבל. כתוב “שמקבלת פעולה של דרדס רגיל ומפעילה אותו עליו”, ה"עליו" הכוונה לדרדסאבא או לדרדס?

מהתשובה של ים אני מבין שמפעילה אותו על הדרדס.
זה גם הרעיון - give order

יאפ, כמו שיוסף פה אומר, הכוונה להפעיל על הדרדס.

אז הוא מקבל גם מופע של דרדס? ואם מדובר בפעולה כמו eat אז צריך גם את רשימת המנות, לא?

בוא נגיד שלבינתיים הוא יודע לקבל רק פעולות ללא פרמטרים, כמו sleep

2 לייקים

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

פשוט את הפעולה. ראה את הדוגמה שנתתי.

לייק 1

לא צריך לתת לgive_order את sleep עם סוגריים? הרי זו פעולה לא תכונה, לא?

לייק 1

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

2 לייקים

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

לייק 1

לא מצליחה להבין לגבי הגדרת הפעולה…
def give_order(self,…?)

האם ניתן להעביר גם את השף לeat או רק רשימה של מנות?

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

לייק 1

אם מופעלת פעולת שינה לדרדס שהוא כבר ישן, האם מתחדשת פעולת השינה שלו (כלומר, לא משנה כמה זמן עבר מאז שנרדם, מרגע זה צריך לחכות עוד 8 שעות שיתעורר) או שמתעלמים מהפעולה?

שמופעלת פעולה על דרדס ישן לא אמור לקרות כלום הוא ממשיך לישון.

עריכה: נושא הפסקת השינה מחוץ לגבולותי מה שנקרא.

הם ישנים בדיוק 8 שעות!
משמע שהם קמים לבד.

לייק 1

גם לא הבנתי…

יש גם אפשרות שלא לשמור משתנה בוליאני של ישן/ער, אלא את זמן השינה האחרון שלו, ומכאן להמשיך ולהסיק מסקנות בנוגע למצבו של הדרדס :slight_smile:
אם בכל זאת רוצים לעשות טיימר - יש דרכים לעשות גם את זה באמצעות threading (אבל שוב, לדעתי מיותר).