לגבי משתני מחלקה, אני פשוט מתעד אותם רגיל כמו כל Attribute? נגיד בתור האחרונים ארשום “BOTTOM_BOUND (int): whatever” ?
ושאלה בנוגע ל-Sphinx Docstrings במחברת 2:
מה שקראנו להם Parameters לפי גוגל וNumPy עכשיו נקרא ivar, ומה שקראנו לו attribute פה נקרה param.
ניסיתי קצת לקרוא על זה יותר כי סה"כ אישית יותר קל לי לקרוא את הספינקס כי הוא קצר וקולע במראה שלו, אבל בגלל שלא הבנתי מתי לכתוב מה את התרגילים הגשתי בסגנון גוגל כי הוא השני בנוחות מבחינתי.
העניין הוא שככה זה היה רק בתחילת המחלקה וה-init. אבל בהמשך בהתייחסות לפונקציה פתאום כתוב על האיברים שהתקבלו בפרמטרים param (סה"כ הגיוני) אבל למה מקודם אז התייחסנו לattributes בתור param?
אנסה קצת יותר מובן עם תמונות (מקווה שיהיה מובן עכשיו):
נתחיל עם google docstrings
כותרת Args ניתנת למה שהתקבל בתור ארגומנט באתחול (וגם בכל פונקציה)
ולתכונות של המחלקה נתנו את הכותרת Attribute
(לעומת זה NumPy Docstring פשוט שינה את המילה Args אל Parameters, אבל סהכ נשאר בדיוק אותו דבר)
פה פתאום לארגומנט שהתקבל באתחול ניתן הכותרת ivar ולתכונות קראנו param
אבל בפונקציה בהמשך קראנו לארגומנטים שהתקבלו גם param.
כלומר בgoogle/numpy יש ממש הפרדה בין ארגומנטים שמתקבלים, לבין התכונות של המחלקה
לעומת זה בספינקס נראה שאין הפרדה לפי ה"כותרת" מה הסוג של הפרמטר האם הוא תכונה או ארגומנט, וגם מה זה ה-ivar שניתן לארגומנט באתחול?
למען האמת זו פשוט טעות, תודה שמצאת – אצרף לתיקונים
ivar הוא instance variable, משמע שב־Sphinx ה־ivar אמור להיות message_id ו־boxes
מצרף פה את התיעוד הנכון:
:ivar int message_id: Incremental id of the last message sent.
:ivar dict boxes: Users' inboxes.
:param list usernames: Users for which we should create PO Boxes.
אם כבר אז כבר, לכאורה צריך להיות :param list of str usernames: לא?
בגוגל זה ברור יותר ברשימות כי זה בסוגריים, פה זה טיפה נראה מבלבל
וגם, אחד מהבעיות שלא הצלחתי להבין כשחיפשתי מה זה ivar, נתקלתי בCvar/Var מה הם?
cvar זה משתנים כמו MAX_BOUNDRY שאני יכול להגדיר במקום לכתוב מספר כל פעם?