שיטת סטטית ב־Python

שיטת Python סטטית

בפוסט זה בקצרה, נלמד כיצד ליצור ולהשתמש בשיטת Python סטטית. נסתכל גם על היתרונות והחסרונות של שיטות סטטיות בהשוואה לשיטות אינסטנס. בואו נתחיל.

מהו שיטה סטטית?

שיטות סטטיות ב-Python דומות ביותר לשיטות ברמת המחלקה, ההבדל הוא ששיטה סטטית מקושרת למחלקה במקום לאובייקטים של אותה מחלקה. זה אומר שניתן לקרוא לשיטה סטטית בלי אובייקט עבור אותה מחלקה. זה גם אומר ששיטות סטטיות לא יכולות לשנות את מצב האובייקט מכיוון שהן לא מקושרות אליו. בואו נראה כיצד ניתן ליצור שיטות סטטיות ב-Python.

יצירת שיטות סטטיות ב-Python

שיטות סטטיות ב-Python ניתן ליצור בשני אופנים. בואו נראה כל אחת מהדרכים כאן:

שימוש ב-staticmethod()

בואו נקפוץ ישירות לדוגמת קוד על איך להשתמש בשיטת staticmethod():

class Calculator:

    def addNumbers(x, y):
        return x + y

# צור שיטת סטטית addNumbers
Calculator.addNumbers = staticmethod(Calculator.addNumbers)

print('Product:', Calculator.addNumbers(15, 110))

שימו לב שקראנו ל-addNumbers שיצרנו בלי אובייקט. כאשר נריץ את התוכנית הזו, הנה הפלט שנקבל: לא היו פה הפתעות. גישה זו מבוקרת מאוד מכיוון שבכל מקום, אפשר ליצור שיטה סטטית מתוך שיטת מחלקה גם. בואו נראה גישה נוספת עם הדוגמה הזו.

שימוש ב-@staticmethod

זו דרך עדינה יותר ליצירת שיטה סטטית מאשר שאיננו צריכים לסמוך על הגדרת הצהרת השיטה כשיטת מחלקה ולהפוך אותה לסטטית בכל מקום שתרצו להפוך אותה לסטטית. בואו נשתמש באנוטציה זו בקטע קוד:

class Calculator:

    # צור שיטת סטטית addNumbers
    @staticmethod
    def addNumbers(x, y):
        return x + y

print('Product:', Calculator.addNumbers(15, 110))

כאשר אנו מפעילים את התוכנית הזו, כאן הוא הפלט שנקבל: הייתה זו בעצם דרך הרבה יותר טובה ליצור שיטת סטטית מאשר כאשר אנו משתמשים בהגדרת @staticmethod.

יתרונות של שיטת סטטית בפייתון

שיטות סטטיות מציעות שימוש ברור מאוד. כאשר אנו זקוקים לפונקציונליות מסוימת לא ביחס לאובייקט אלא ביחס למחלקה כולה, אנו יוצרים שיטה סטטית. זה יתרון די ניכר כאשר אנו צריכים ליצור שיטות יולטיליטי כי הן לרוב לא מקושרות למחזור חיי האובייקט. לבסוף, חשוב לשים לב כי בשיטה סטטית, אין צורך להעביר את self כארגומנט ראשון. מקור API: תיעוד פייתון

Source:
https://www.digitalocean.com/community/tutorials/python-static-method