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είναι απλώς μια λειτουργία μέσα στην κλάση, που δεν εξαρτάται από την κλάση ή ένα στιγμιότυπο.