On Monday 01 August 2005 17:02, Baruch Even wrote:
> Shlomi Fish wrote:
> >>>ככל הנראה "import cgi" לא מבצע פעילות כלשהי כשלעצמו שתגרום לו להתנהג
> >>> מוזר כאשר הוא לא רץ כתסריט CGI. אבל אם פעולת ה-import הייתה עושה משהו
> >>> כזה, אז לא ניתן היה להשתמש בטריק הזה.
> >>
> >>זה לא במקרה. מדובר במודול ספריה סטנדרטית, וככזה ניתן לצפות ממנו להתנהג
> >>בצורה מקובלת (כלומר, כפי שאמרתי קודם: import לא אמור לעשות דברים משונים)
> >
> > המממ... אם כך, מה הנוהג המקובל בפייתון למצב שהמודול מממש מנשק שדורש
> > אתחול? האם הנחת העבודה היא שיש לבצע את האתחול בזמן היצירה של מופע של
> > אובייקט, שהוא מכיל את כל הפונקציונליות של המנשק? כלומר כל מה שאני עושה
> > הוא משהו כמו:
>
> אם זו מחלקה אז כשנוצר אובייקט הוא מאותחל ביצירה שלו. אם זה מודול הוא
> יכול לאתחל את עצמו בזמן הטעינה. 

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

כך, שלדעתי, הדרך שאני הצעתי (ושעמית אחר-כך שיפר במקצת) של התלבשות על 
sys.modules היא הדרך ה-failsafe וה-foolproof ביותר.

בכבוד רב,

        שלומי פיש

כעת נשאלת השאלה איך ניתן לחקות את המודול sys שבו נמצא המשתנה sys.modules. מי 
ישגיח על המשגיח?

> במקרה של cgi אם תנסה ליצור את 
> FieldStorage הוא יאתחל הכל, אם תנסה לאתחל אובייקט נוסף שלו, תקבל זבל.
>
>  > או אוליי אני פשוט צריך לקרוא את הקוד.
>
> זה תמיד עובד.
>
> > אוקיי. בשל העובדה שפייתון היא שפה עם טיפוסיות דינמית (dynamical typing)
> > וכן שפה סימבולית, ניתן להחליף כל אובייקט באובייקט אחר שאינו שייך לו כל
> > עוד שמות שגרות המחלקה זהים. גם בפרל זה אותו הדבר. רק ששם אם הקוד מבצע
> > שימוש ב- $obj->isa("MyClass")
> > עלולה להיווצר בעייה (אבל בד"כ לא). גם בפייתון אמורה להיות פונקציה דומה
> > המבררת אם אובייקט יורש ממחלקה מסוימת אבל זה לא עומד לי על קצה הלשון
> > וידרוש ממני קצת חיפוש באינטרנט.
>
> isinstance(obj, MyClass)
>
> ברוך

-- 

---------------------------------------------------------------------
Shlomi Fish      [EMAIL PROTECTED]
Homepage:        http://www.shlomifish.org/

95% of the programmers consider 95% of the code they did not write, in the
bottom 5%.

לענות