Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ classmethod και staticmethod στην Python;

sobes.tech AI

Απάντηση από AI

Το classmethod και το staticmethod είναι δύο τύποι μεθόδων στην Python που διαφέρουν στον τρόπο πρόσβασης στην κλάση και τα δεδομένα της.

  • @classmethod — μέθοδος που λαμβάνει ως πρώτο όρισμα την ίδια την κλάση (cls), και όχι ένα στιγμιότυπο. Αυτό επιτρέπει στη μέθοδο να εργάζεται με την κλάση, να αλλάζει την κατάσταση της ή να δημιουργεί νέα στιγμιότυπα.

  • @staticmethod — μέθοδος που δεν λαμβάνει αυτόματα ούτε στιγμιότυπο (self) ούτε κλάση (cls). Είναι μια κανονική λειτουργία που σχετίζεται λογικά με την κλάση, αλλά δεν εξαρτάται από την κατάσταση της.

Παράδειγμα:

class MyClass:
    count = 0

    def __init__(self):
        MyClass.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

    @staticmethod
    def greet(name):
        return f"Hello, {name}!"

obj = MyClass()
print(MyClass.get_count())  # Εμφανίζει τον αριθμό των δημιουργημένων αντικειμένων
print(MyClass.greet('Alice'))  # Εμφανίζει ένα χαιρετισμό

Περίληψη:

  • Το classmethod μπορεί να αλλάξει ή να χρησιμοποιήσει την κατάσταση της κλάσης.
  • Το staticmethod είναι απλώς μια λειτουργία μέσα στην κλάση, που δεν εξαρτάται από την κλάση ή ένα στιγμιότυπο.