תיעוד, משתני מחלקה, והספינקס שביניהם

תגיות:

אז כמה תהיות

לגבי משתני מחלקה, אני פשוט מתעד אותם רגיל כמו כל Attribute? נגיד בתור האחרונים ארשום “BOTTOM_BOUND (int): whatever” ?

ושאלה בנוגע ל-Sphinx Docstrings במחברת 2:
מה שקראנו להם Parameters לפי גוגל וNumPy עכשיו נקרא ivar, ומה שקראנו לו attribute פה נקרה param.
ניסיתי קצת לקרוא על זה יותר כי סה"כ אישית יותר קל לי לקרוא את הספינקס כי הוא קצר וקולע במראה שלו, אבל בגלל שלא הבנתי מתי לכתוב מה את התרגילים הגשתי בסגנון גוגל כי הוא השני בנוחות מבחינתי.

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

הבחירה במה לתעד היא שלנו אם הספינקס נוח לך יותר לך על זה.

בנוגע למשתני מחלקה - אני לא יודע אבל ממה שקראתי מתעדים אותם באטריביוטס.

איבדתי אותך. תוכל להסביר בקצרה מה ראית במקום א’, מה הוא מקום א’, מה ראית במקום ב’ ומה הוא מקום ב’?

אנסה קצת יותר מובן עם תמונות (מקווה שיהיה מובן עכשיו):

נתחיל עם google docstrings
image
כותרת Args ניתנת למה שהתקבל בתור ארגומנט באתחול (וגם בכל פונקציה)
ולתכונות של המחלקה נתנו את הכותרת Attribute
(לעומת זה NumPy Docstring פשוט שינה את המילה Args אל Parameters, אבל סהכ נשאר בדיוק אותו דבר)

קפיצה אל ספינקס


פה פתאום לארגומנט שהתקבל באתחול ניתן הכותרת ivar ולתכונות קראנו param
אבל בפונקציה בהמשך קראנו לארגומנטים שהתקבלו גם param.

כלומר בgoogle/numpy יש ממש הפרדה בין ארגומנטים שמתקבלים, לבין התכונות של המחלקה
לעומת זה בספינקס נראה שאין הפרדה לפי ה"כותרת" מה הסוג של הפרמטר האם הוא תכונה או ארגומנט, וגם מה זה ה-ivar שניתן לארגומנט באתחול?

לייק 1

למען האמת זו פשוט טעות, תודה שמצאת – אצרף לתיקונים :slight_smile:
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.

מעולה, אז אולי כן אתחיל לכתוב עם ספינקס :slight_smile:

אם כבר אז כבר, לכאורה צריך להיות :param list of str usernames: לא?
בגוגל זה ברור יותר ברשימות כי זה בסוגריים, פה זה טיפה נראה מבלבל

וגם, אחד מהבעיות שלא הצלחתי להבין כשחיפשתי מה זה ivar, נתקלתי בCvar/Var מה הם?
cvar זה משתנים כמו MAX_BOUNDRY שאני יכול להגדיר במקום לכתוב מספר כל פעם?

קצת גוגל, אתה תמצא את זה.
אם אתה רוצה לתת יותר ממילה אחת ב־Sphinx בתיעוד ה־type אתה צריך שורה נפרדת ל־type

כן, cvar אלו משתנים ששייכים למחלקה ולא למופע.
var זה כשאתה לא מעוניין להיות ספציפי בנוגע לזה

:param usernames:
:type usernames: list of str

ומה התשובה על משתני המחלקה - מתועדים כ-attributes או לא?