Sobes.tech
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()  # καλεί μια μέθοδο κλάσης