הפרמטר self
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 4 מתוך 64.
הפרמטר self מתייחס למופע של מחלקה בתוך מתודות. הוא מאפשר לך לגשת לתכונות של האובייקט הנוכחי ולשנות אותן.
הנה דוגמה למחלקה עם מתודות המשתמשות ב־self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")הפרמטר self חייב תמיד להיות הפרמטר הראשון בהגדרות של מתודות. הוא מציין למתודה באיזה אובייקט מסוים נעשה שימוש.
צרו אובייקט של מכונית והוסיפו מאפיינים:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"עכשיו קראו למתודות:
my_car.honk()
my_car.describe()פלט:
Beep beep!
I am a Red Sedanשימו לב שכאשר קוראים ל־my_car.describe(), לא מעבירים שום דבר עבור self — Python מעבירה באופן אוטומטי את my_car כפרמטר self.
הנה מה שקורה מאחורי הקלעים:
# כשכותבים את זה:
my_car.describe()
# Python למעשה עושה את זה:
Car.describe(my_car)הפרמטר self מאפשר לכל אובייקט לגשת לנתונים שלו. ללא self, מתודות לא היו יודעות באילו תכונות של האובייקט להשתמש.
נקודה חשובה: תמיד יש לכלול את self כפרמטר הראשון בהגדרות של מתודות, אך לעולם אין להעביר אותו כשקוראים למתודות — Python מטפלת בכך אוטומטית.
אתגר
קלהשלם את המחלקה Car בקובץ car.py על ידי הוספת מתודה בשם display_info שמשתמשת בפרמטר self כדי להדפיס את השנה, היצרן והדגם של המכונית בפורמט:
"This car is a [year] [make] [model]".
car.py: מכיל את הגדרת המחלקהCar, שבה תוסיף את המתודהdisplay_infodriver.py: קובץ ההרצה הראשי שמייבא את המחלקהCarומשתמש בה
הקובץ driver.py ייבא את המחלקה Car שלך וייצור מופעים כדי לבדוק את המימוש שלך. ודא שהמתודה שלך פועלת כראוי כשקוראים לה מקובץ מנהל ההתקן.
נסו בעצמכם
from car import Car
# בדקו את הקוד שלכם
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # אמור להדפיס: This car is a 2020 Toyota Corollaהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםהפרמטר selfמתודותמאפייניםשיטת הבנאי (__init__)חזרה: מחשבון פשוט5פולימורפיזם
בחינה מחדש של דריסת מתודותטיפוסיות ברווזמחלקות ומתודות אבסטרקטיותעיצוב ממשקיםסיכום – מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה לעומת הורשהMixinsמתודות סטטיות ומתודות מחלקהדקורטורים למחלקותמנהלי הקשרתרגלו בעצמכם: קומפיילר Python אונליין