בשפה מונחית עצמים, מחלקה היא פיסת קוד הניתנת להרחבה המייצגת תבנית ליצירה ושימוש באובייקטים של אותה מחלקה. אובייקט של מחלקה פשוט מתייחס למופע של המחלקה המוגדרת.
יסודות בכיתת פיתון
בשפת התכנות של פייתון, כל פיסת נתונים מיוצגת כמופע של מחלקה כלשהי. אם אינך מכיר את השפה, עיין בשפה שלנו מדריך למתחילים לפייתון לפני שעוברים הלאה.
מחלקה מספקת קבוצה של התנהגויות בצורה של פונקציות חבר (המכונות גם שיטות), שיש לה יישומים המשותפים ל את כל המקרים של אותה מעמד, והיא גם קובעת את האופן שבו מידע המדינה לייצוגו מיוצג בצורה של תכונות.
קרא עוד: שיטות כיתה בפייתון: ההבדלים החשובים
הקוד שלהלן מייצג דוגמה למחלקה מוגדרת בפייתון. המחלקה המוגדרת בקוד מספקת יישום של מחלקת RaceCar.
כל מופע בכיתה מספק מודל פשוט עבור מותגי מכוניות שונים והוא מכיל את המצב הבא מידע: שם הרכב, שם הנהג, מספר לוחית הרישוי של המכונית, מהירות נוכחית, תשלום מהיר, וכן צֶבַע.
מחלקת מכוניות זו מדגמנת חיישן מיוחד בתוך כל מכונית אשר רושם קנס של 50 דולר כנגד נהג הרכב אם הוא חורג מהמגבלה החוקית של 140 מייל לשעה.
דוגמה לשיעור (מחלקת רכב)
רכב בכיתה:
#בַּנַאִי
# שיטת init אחראית לאתחול ערכי המופע #variables בכיתה.
def __init __ (עצמי, שם רכב, שם נהג, מספר רישיון,
הנוכחי_מהירות, מהירות טעינה, צבע):
self.car_name = שם רכב
self._driver_name = driver_name
self._license_plate_number = מספר_רישיון
self._current_speed = הנוכחי_מהירות
self._speeding_charge = מהירות מטען
עצמי.צבע = צבע
# שיטות גישה
# שיטת get_car_name מחזירה את שם המכונית
def get_car_name (עצמי):
להחזיר עצמי ._מכונית_שם
# שיטת get_driver_name מחזירה את שם הנהג
def get_driver_name (עצמי):
להחזיר את עצמי. שם הנהג
# שיטת get_license_plate מחזירה את לוחית הרישוי של המכונית
def get_license_plate (עצמי):
להחזיר את עצמי
# שיטת get_current_speed מחזירה את המהירות הנוכחית בה המכונית זזה #
def get_current_speed (עצמי):
להחזיר את עצמי._זרם_מהירות
# שיטת get_speeding_charge מחזירה את הסכום הכולל של הכסף
# הנהג צריך לשלם עבור מהירות יתר
def get_speeding_charge (עצמי):
החזר עצמי ._מהירות_טעינה
# שיטת get_colour מחזירה את צבע הנסיעה המתוקה שלנו!
def get_colour (עצמי):
להחזיר את עצמי ._צבע
# שיטות מוטור
# ערך set_driver משנה את הנהג ברכב שלנו.
def set_driver (עצמי, נהג חדש):
self._driver_name = נהג חדש
# שיטת ה- speed_ticket מבטיחה כי הנהג יחויב בסכום של 50 דולר כאשר הוא או היא נתפסו במהירות גבוהה מעל 140 מייל לשעה :(
def speed_ticket (עצמי, מהירות_זרם):
אם הנוכחי_מהירות <= 140:
להחזיר שקר
אַחֵר:
self._speeding_charge + = 50
להחזיר נכון
# שיטת ביצוע התשלום מבטיחה שהנהג יוכל לשלם עבור כל הסכום שהוא חייב בגין חיובי כרטיס מהיר.
def def_payment (עצמי, סכום_שולם):
self._speeding_charge - = סכום ששולם
הסבר על דוגמת כיתת הפיתון
פרמטר ה"עצמי "
ראשית, שים לב שיש הבדל בין חתימת השיטה המוצהרת בכיתה לבין חתימת השיטה המשמשת את המתכנת כדי לקרוא לפונקציה. למשל, קבל_צבע השיטה כהגדרתה בכיתה לוקחת פרמטר אחד שהוא הפרמטר 'עצמי'.
עם זאת, כאשר המתכנת קורא לשיטה זו במופע של הכיתה, הוא אינו מספק פרמטרים כלשהם. ניתן לראות את אותה תופעה בשיטת speeding_ticket שמוגדרת לקחת שני פרמטרים בכיתה (כלומר עצמי ו- current_speed), אך המתכנת מסוגל לבצע את השיטה הזו על ידי אספקת הערך רק ל- 'הנוכחי_מהירות' פָּרָמֶטֶר.
הסיבה לכך היא שמטרת הפרמטר ה"עצמי "המסופק היא לאגד את השיטה למופע האובייקט עליו נקראה ואין ערך שיינתן על ידי המתכנת.
הקונסטרוקטור
בונה של מחלקה מתייחס לשיטת המחלקה שמשתמש יכול להתקשר אליה כדי ליצור מופע אובייקט של אותה מחלקה. במחלקה רכב, המשתמש יכול ליצור מופע של אובייקט באמצעות התחביר הבא:
# יוצרים את בוגאטי משלנו :)
מכונית ("בוגאטי", "דייויד סאסו", 90828, 0, 0, "אדום שרי")
ביצוע קוד זה מביא לקריאה לשיטת __init__ במחלקת הרכב. האחריות של שיטה זו היא ליצור אובייקט רכב אשראי חדש שנוצר עם ערכי המופע שסופקו. כל אובייקט של מחלקת הרכב מורכב משישה משתני מופע שהם:
- _כונית_שם
- _שם הנהג
- _לוחית רישוי
- _מהירות נוכחית
- _מהירות_טעינה
- _צֶבַע
שיטות אביזר
אלה שיטות שנכתבות כדי לגשת למידע המצב של מופע אובייקט. בשיעור רכב, שיטות הגישה שנכתבו הן:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_ מהירות
- get_speeding_charge
- קבל_צבע
שיטות מוטציה:
אלה שיטות שנכתבות כדי לשנות את המידע המצב של מופע אובייקט. בשיעור רכב, שיטות המוטציה שנכתבו הן:
- set_driver
- דו"ח מהירות
- לשלם
המושג אנקפסולציה
'אנקפסולציה' הוא מונח המשמש לתיאור עקרון של עיצוב מונחה עצמים כאשר רכיבי התוכנית אינם צריכים לחשוף את הפרטים הפנימיים של יישומיהם בהתאמה. כדי להגביר את הבנתך את המושג אנקפסולציה, ראה שלנו מאמר על אנקפסולציה.
בדיקת שגיאות
היישום שלנו של מחלקת המכוניות אינו חזק מכיוון שהוא עשוי לקרוס או לתקול בהתאם לקלט שהוא מקבל מהמתכנת.
ראשית, שים לב שאיננו בודקים את סוגי הפרמטרים של הכרטיס המהיר ואת שיטות ביצוע התשלום, וגם לא בודקים את סוגי הפרמטרים של הקונסטרוקטור. זה יכול להוביל לקרוס התוכנית אם המשתמש מספק טיעון שלא היה צפוי. לדוגמא, אם המשתמש מבצע שיחה כמו speed_ticket ("שבב ahoy") התוכנית תקרוס מכיוון שהסוג לו ציפתה השיטה היה מספר שלם ולא מחרוזת.
עכשיו אתה מבין את היסודות של פייתון בכיתה
במאמר זה התוודענו למושג מחלקת פיתון ואובייקט מחלקה של פייתון. הוצגו לנו גם הרעיונות שעליהם בנוי מחלקת פיתון כגון: אנקפסולציה, המזהה 'העצמי', שיטות גישה ושיטות מוטציה.
בעזרת מידע זה אתה אמור להיות מסוגל ליצור בכיתה פייתון פשוט לבד ולבדוק אותו :)
כעת תצטרך לאמת את זהותך באמצעות המכשיר הנייד שלך כדי לקשר את חשבונך בשולחן העבודה ובאפליקציית האינטרנט.
- תִכנוּת
- פִּיתוֹן
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
צעד אחד נוסף !!!
אנא אשר את כתובת הדוא"ל שלך בדוא"ל ששלחנו לך זה עתה.