משתני מופע לעומת משתני מחלקה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 13 מתוך 64.
משתני מופע ייחודיים לכל אובייקט, ואילו משתני מחלקה משותפים לכל האובייקטים מאותה מחלקה.
הנה דוגמה למחלקה עם שני סוגי המשתנים
class Student:
# משתנה מחלקה - משותף לכל המופעים
school = "Python High School"
def __init__(self, name, grade):
# משתני מופע - ייחודיים לכל תלמיד
self.name = name
self.grade = gradeיצירת אובייקטים של תלמידים:
alice = Student("Alice", "A")
bob = Student("Bob", "B")גישה למשתני מופע (ייחודיים לכל אובייקט):
print(alice.name) # Alice
print(bob.name) # Bob
print(alice.grade) # A
print(bob.grade) # Bגישה למשתני מחלקה (המשותפים לכל האובייקטים):
print(alice.school) # Python High School
print(bob.school) # Python High School
print(Student.school) # Python High Schoolעכשיו שנה את משתנה המחלקה:
Student.school = "Python Academy"בדקו כיצד השינוי משפיע על כל המופעים:
print(alice.school) # Python Academy
print(bob.school) # Python Academyפלט:
Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python Academyאפשר גם ליצור משתני מופע לאחר יצירת האובייקט:
alice.age = 16 # זה יוצר משתנה מופע
print(alice.age) # 16
# print(bob.age) # זה יגרום לשגיאה - ל-bob אין ageההבדל העיקרי: משתני מופע (שנוצרים באמצעות self.variable_name) ייחודיים לכל אובייקט, ואילו משתני מחלקה (שמוגדרים ישירות במחלקה) משותפים לכל האובייקטים. שינוי של משתנה מחלקה משפיע על כל המופעים.
אתגר
קלהשלם מערכת בנקאית.. תגדיר מחלקה BankAccount בקובץ אחד ותשתמש בה בקובץ אחר.
תעבוד עם:
bank_account.py: תגדיר את המחלקהBankAccountעם מאפיינים ומתודותdriver.py: תייבא את המחלקה, תיצור חשבונות ותדגים משתני מחלקה
פעל לפי הערות TODO בשני הקבצים לקבלת הוראות שלב אחר שלב. ההערות ינחו אותך ביצירת המחלקה עם משתנים ומתודות מתאימים, ובהדגמה של האופן שבו משתני מחלקה משפיעים על כל המופעים.
נסו בעצמכם
# TODO: ייבאו את המחלקה BankAccount מתוך bank_account.py
from bank_account import BankAccount
# TODO: צרו שני חשבונות עם הפרטים המדויקים הבאים:
# - account1: בעל החשבון "Alice Smith" עם יתרה של $1000
# - account2: בעל החשבון "Bob Jones" עם יתרה של $2000
# TODO: קראו ל־display_info() עבור שני החשבונות
# TODO: שנו את משתנה המחלקה interest_rate ל־0.03 (3%)
# השתמשו בפורמט הזה: BankAccount.interest_rate = 0.03
# TODO: הדפיסו את הטקסט "After interest rate change:"
# TODO: קראו שוב ל־display_info() עבור שני החשבונות כדי להראות שלשניהם יש כעת את שיעור הריבית החדשהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםהפרמטר selfמתודותמאפייניםשיטת הבנאי (__init__)חזרה: מחשבון פשוט5פולימורפיזם
בחינה מחדש של דריסת מתודותטיפוסיות ברווזמחלקות ומתודות אבסטרקטיותעיצוב ממשקיםסיכום – מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה לעומת הורשהMixinsמתודות סטטיות ומתודות מחלקהדקורטורים למחלקותמנהלי הקשרתרגלו בעצמכם: קומפיילר Python אונליין