Junior — Middle
Εξηγήστε τις διαφορές μεταξύ self και cls στο πλαίσιο των μεθόδων κλάσης
sobes.tech AI
Απάντηση από AI
Στην Python, το self και το cls είναι συμβάσεις για την πρώτη παράμετρο των μεθόδων, αλλά έχουν διαφορετικό σκοπό:
- Το
selfείναι μια αναφορά σε μια συγκεκριμένη περίπτωση της κλάσης. Χρησιμοποιείται σε συνηθισμένες μεθόδους στιγμιότυπου για πρόσβαση στα χαρακτηριστικά και τις μεθόδους αυτού του αντικειμένου. - Το
clsείναι μια αναφορά στην ίδια την κλάση, όχι σε μια περίπτωση. Χρησιμοποιείται σε μεθόδους κλάσης (σημειώνονται με τον διακοσμητή@classmethod) για εργασία με την κλάση συνολικά, π.χ. για δημιουργία νέων περιπτώσεων ή τροποποίηση ιδιοτήτων της κλάσης.
Παράδειγμα:
class MyClass:
class_var = 0
def __init__(self, value):
self.instance_var = value
def instance_method(self):
print(f'Μεταβλητή στιγμιότυπου: {self.instance_var}')
@classmethod
def class_method(cls):
print(f'Μεταβλητή κλάσης: {cls.class_var}')
obj = MyClass(10)
obj.instance_method() # καλεί μια μέθοδο στιγμιότυπου
MyClass.class_method() # καλεί μια μέθοδο κλάσης