דקורטור של מתודת מחלקה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 12 מתוך 64.
המעצב @classmethod יוצר מתודות שמקבלות את המחלקה עצמה כפרמטר הראשון (cls) במקום מופע (self).
הנה דוגמה למחלקה עם מתודות מחלקה:
class Student:
school_name = "Python Academy"
student_count = 0
def __init__(self, name):
self.name = name
Student.student_count += 1
@classmethod
def get_school_info(cls):
return f"School: {cls.school_name}, Students: {cls.student_count}"
@classmethod
def create_guest_student(cls):
return cls("Guest")קרא למתודות של מחלקה באמצעות שם המחלקה:
info = Student.get_school_info()
print(info)צרו כמה תלמידים:
alice = Student("Alice")
bob = Student("Bob")
updated_info = Student.get_school_info()
print(updated_info)השתמשו במתודות של המחלקה כבנאים חלופיים:
guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())פלט:
School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3אפשר לקרוא למתודות מחלקה גם מתוך מופעים:
alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)פלט:
School: Python Academy, Students: 1נקודה חשובה: השתמשו ב־@classmethod כשצריך לגשת לתכונות המחלקה או ליצור דרכים חלופיות לבניית אובייקטים. הפרמטר הראשון הוא cls (המחלקה עצמה), ולא self.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםהפרמטר selfמתודותמאפייניםשיטת הבנאי (__init__)חזרה: מחשבון פשוט5פולימורפיזם
בחינה מחדש של דריסת מתודותטיפוסיות ברווזמחלקות ומתודות אבסטרקטיותעיצוב ממשקיםסיכום – מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה לעומת הורשהMixinsמתודות סטטיות ומתודות מחלקהדקורטורים למחלקותמנהלי הקשרתרגלו בעצמכם: קומפיילר Python אונליין