גבולות גזרה של מחלקה

תגיות:

איך זה שהקוד עובד גם ללא השינוי שמופיע באשכול התיקונים? כלומר מה ה scope של ארגומנט שמועבר ל __init__?

ניסיתי לבדוק את זה על מחלקה פשוטה וקיבלתי את השגיאה הבאה -

זה בגלל שזה מקרה מאוד ספציפי שהשם שניתן לאובייקט, נוא אותו שם שהשתמשו בתוך המתודה

ראה את השגיאה בגלל שינוי השם שעשיתי

לייק 1

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

אני 99% בטוח שזה בדיוק הסיבה…

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

לייק 1

זה אכן עובד. למדתי משהו, תודה :slight_smile:

אז בעצם איכשהו המתודה מגיעה לאובייקט שיצרנו :thinking:

כן, כי זה עניין של “גלובאליות”

החלק “העיקרי” שלך נקראה לו ככה הוא פתוח וידוע לכל. בגלל שהשם בתוך הפונקציה הוא כמו השם בחלק העיקרי, אז כשהפונקציה פועלת זה אחרי שכבר ניתן ערך למשתנה. ומה שהפעיל את הפונקציה זה אותו חלק עיקרי ולכן ב-scope הזה המשתנה/מופע של האובייקט ידוע

לייק 1