דקורטור מאפיין
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 10 מתוך 64.
המעטר @property מאפשר לך לגשת למתודות כמו לתכונות, ומספק דרך נקייה לקבלת ערכים ולהגדרתם. הדבר שימושי לאנקפסולציה, ומאפשר לך להוסיף לוגיקת אימות או ערכים מחושבים בלי לשנות את הממשק הציבורי של המחלקה שלך.
הנה דוגמה למחלקה המשתמשת ב־@property:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@property
def area(self):
return 3.14159 * self._radius ** 2שימו לב שאנחנו משתמשים ב־self._radius כדי לאחסן את הערך בפועל. אם היינו משתמשים ב־self.radius בתוך המתודה getter, היא הייתה קוראת שוב למתודת getter, והדבר היה מוביל לרקורסיה אינסופית.
צרו מעגל וגשתם למאפיינים:
my_circle = Circle(5)אפשר לגשת למאפיינים כמו לתכונות רגילות:
print(my_circle.radius)
print(my_circle.area)פלט:
5
78.53975שימו לב שלא משתמשים בסוגריים () כשניגשים למאפיינים — הם נראים כמו תכונות, אבל מריצים קוד של מתודה.
הוסף מגדיר כדי לאפשר שינוי של ערכים עם אימות:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
else:
print("Radius must be positive!")עכשיו אפשר להגדיר את הרדיוס כמו מאפיין:
my_circle = Circle(5)
my_circle.radius = 10 # משתמש במתודת ההגדרה
print(my_circle.radius) # משתמש במתודת האחזורפלט:
10נקודה מרכזית: @property גורמת למתודות להיראות כמו מאפיינים, ואילו @property_name.setter מאפשרת לך לשלוט באופן שבו ערכים מוקצים, וכך מאפשרת אימות נתונים ואנקפסולציה.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםהפרמטר selfמתודותמאפייניםשיטת הבנאי (__init__)חזרה: מחשבון פשוט5פולימורפיזם
בחינה מחדש של דריסת מתודותטיפוסיות ברווזמחלקות ומתודות אבסטרקטיותעיצוב ממשקיםסיכום – מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה לעומת הורשהMixinsמתודות סטטיות ומתודות מחלקהדקורטורים למחלקותמנהלי הקשרתרגלו בעצמכם: קומפיילר Python אונליין