אובייקט שהוא תכונה של אובייקט

יש בעיה עקרונית עם זה שאחת התכונות של אובייקט תפנה לאובייקט אחר? (למשל, נניח יש לנו מחלקה של מצרכים עבור רשימת קניות, ואחת התכונות של מצרך היא מצרך חלופי)

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

נסה לעשות את זה ותראה מה חוזר.

הבנתי מה אתה אומר. אני חושבת להגדיר אותו בהתחלה כ-None, ושהוא יתעדכן רק כאשר יש לו עם מה להתעדכן (קרי בהכרח כשאובייקטים אחרים כבר קיימים).
זה בשביל אורטל קומבט2… יש מצב שאני סתם מסבכת את עצמי

מעבר לזה שמחלקת arena צריכה להכיל מחלקות של Player אני לא רואה סיבה מספיק טובה
שArena תכיל Arena אחרת או Player יכיל Player אחר.

לייק 1

במה שונה המקרה של “רשימת אויבים”? בסוף זו רשימה ששייכת לPlayer ומכילה Players אחרים, לא? או שגם כאן הבנתי לא נכון והיא אמורה להכיל רק שמות?

הבנת נכון. אני מדבר על הגדרת מחלקה בתוך מחלקה אחרת … כלומר לעשות:

self.arg = Player()

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

כמובן שאחרי שהקוד רץ ומחלקה קיימת יכולים להיות בה מבני נתונים שיכולים להכיל אובייקטים של אותה המחלקה. (כמו רשימת אוייבים) אבל זה לא המקרה ממה שאני הבנתי מהשאלה אלא מה שהצגתי פה למעלה.

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

כן במקרה כזה זה אפשרי (בדיוק כמו שזה יעבוד ברשימת אוייבים… אבל שוב זה לא יתן להכניס בהגדרת המחלקה רק אחרי. :slight_smile:
בהצלחה

2 לייקים