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

תגיות:

נניח שיצרתי 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 (אבל שוב, לדעתי מיותר).

אני אישית לא חושה שיש מה להיכנס לזה כי זה נושאים דיי מורכבים. המטרה היא שלא יהיה אפשר לעשות פעולות על דרדס שישן / שישין פחות מ8 .

לדעתי פשוט תעשו שאם היא ישן לא ניתן לעשות עליו פעולה, ואם הוא ישן מספיק תעירו אותו שיעשה אותה נניח.