שאלה כללית בנוגע למחלקות

תגיות:

אני מנסה לבצע את הדבר הבא:
בתוך אחת הפעולות של מחלקה, אני רוצה ליצור מופע חדש, אשר יכיל ‘צילום’ נוכחי של כל האטריביוטס של המחלקה. לדוגמא
‘’’
class My_class:
def init(self):
self.my_hobby = None

def create_hobby(self):
    self.my_hobby =  'swimming'
    temp = MY_c

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

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

אני בכלל לא הבנתי מהקוד שלך מה אתה מנסה לעשות.
בcreate_hobby אתה מכניס מידע ולא מעתיק את המידע שקיים (“צילום”), אז למה אתה לא מייצר את האובייקט עם המידע הזה מראש?

להוסיף שני קווים תחתונים לפני my_hobby שבפונקציה?

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

לחזור לערמת השחת הזאת זה אף פעם לא פשוט :wink:
בעיקרון זה מה שסיבך אותי:

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

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


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

מה שעשית פה זה להוסיף לרשימה את self ומעולם לא יצרת אובייקט נוסף, רק את a :slight_smile:

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

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

לייק 1

לא נראה לי שהבנתי למה את מתכוונת. יש לך דרך להדגים לי על הדוגמה שלי?

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

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

לייק 1

לכל דבר, לא רק למחלקות :slight_smile:

אם אני מבין נכון את הדוגמה, אז במצב של 10 אטריביוטס שונים, אני צריך להעביר את כולם, נכון?

כן. לכן כדאי לך לחפש את המודול הנכון שהופך את זה לעבודה של שורה :slight_smile:

אם זה מתכתב עם להקת רוק אייקונית, אז מצאתי :slight_smile:

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

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