Στον αντικειμενοστραφή προγραμματισμό, η αναφορά στο τρέχον αντικείμενο, που συχνά αναφέρεται ως self, παίζει κρίσιμο ρόλο. Θα μάθεις πώς να χρησιμοποιήσεις αυτήν τη Self-αναφορά αποτελεσματικά, για να διαμορφώσεις την αλληλεπίδραση με κλάσεις και αντικείμενα στην Python.
Κύριες γνώσεις
- Η Self-αναφορά (self) είναι μια σύμβαση στην Python που σου επιτρέπει να έχεις πρόσβαση στις ιδιότητες και τις μεθόδους του τρέχοντος αντικειμένου.
- Το self χρησιμοποιείται ως πρώτος παράμετρος στις μεθόδους των στιγμιοτύπων και αναφέρεται στο συγκεκριμένο αντικείμενο πάνω στο οποίο κλήθηκε η μέθοδος.
- Μπορείς να έχεις πρόσβαση σε αντικείμενα από μεθόδους κλάσης, περνώντας το αντικείμενο ως παράμετρο.
Εξέταση της Self-αναφοράς
Για να κατανοήσεις πλήρως τη σημασία του self, ας δούμε ένα απλό παράδειγμα. Ας υποθέσουμε ότι έχεις μια κλάση Άτομο.

Όταν δημιουργείς ένα στιγμιότυπο αυτής της κλάσης, δεσμεύεται μνήμη και το αντικείμενο είναι έτοιμο προς χρήση. Σε αυτήν την περίπτωση, η μεταβλητή που χρησιμοποιείς για την προσωποποίηση αναφέρεται στην αντίστοιχη περιοχή μνήμης.
Το ιδιαίτερο είναι ότι: αν θέλεις να έχεις πρόσβαση στις ιδιότητες ή τις μεθόδους μέσα στην κλάση, χρειάζεσαι πρόσβαση στο τρέχον αντικείμενο. Δεδομένου ότι κατά τον ορισμό της κλάσης δεν γνωρίζεις πώς θα ονομαστεί το αντικείμενο αργότερα, το self είναι ο τρόπος για να αποκτήσεις αυτήν την αναφορά.
Έτσι, όταν χρησιμοποιείς το self.name, μπορείς να έχεις πρόσβαση στο όνομα του ατόμου που έχει αποθηκευτεί στον αρχικοποιητή.
Ένα πρακτικό παράδειγμα – Η κλάση Αυτοκίνητο
Τώρα ας δημιουργήσουμε ένα πρακτικό παράδειγμα. Δημιουργούμε μια κλάση Αυτοκίνητο, που έχει μια μάρκα και έναν αρχικοποιητή.

Στον αρχικοποιητή, ο παράμετρος μάρκα χρησιμοποιείται για να ορίσει τη μάρκα του αυτοκινήτου. Εδώ παίζει ρόλο το self. Χρησιμοποιείται στη μέθοδο για να αναθέσει την παρεχόμενη τιμή στη μεταβλητή στιγμιοτύπου.

Τώρα μπορείς να δημιουργήσεις μια μέθοδο get_marka που σου επιτρέπει να έχεις πρόσβαση στη μάρκα του αυτοκινήτου. Ο παράμετρος self μεταβιβάζεται αυτόματα όταν καλείται η μέθοδος.

Εάν τώρα δημιουργήσεις ένα αντικείμενο της κλάσης Αυτοκίνητο, ας πούμε tesla, και αποκτήσεις πρόσβαση στη μέθοδο get_marka, το self θα παραπέμπει στο συγκεκριμένο αντικείμενο, δηλαδή στο tesla.

Αυτό σημαίνει ότι μπορείς να περιμένεις ότι η μέθοδος get_marka θα επιστρέψει την τιμή που έχει οριστεί προηγουμένως.

Μπορείς επίσης να καλέσεις τη μέθοδο απευθείας μέσω της κλάσης, περνώντας το αντικείμενο. Αυτό δεν γίνεται συχνά, αλλά είναι χρήσιμο για την κατανόηση της λειτουργίας του self.

Είναι σημαντικό να σημειωθεί ότι η προεπιλεγμένη μέθοδος είναι να καλείς τη μέθοδο μέσω του αντικειμένου, αντί μέσω της κλάσης.
Σύνοψη – Κα mastering το Self-αναφορά στην Python
Η Self-αναφορά είναι μια βασική έννοια στον αντικειμενοστραφή προγραμματισμό με την Python. Σου επιτρέπει εύκολη πρόσβαση στις ιδιότητες και τις μεθόδους του αντικειμένου σου, τόσο μέσα όσο και έξω από συναρτήσεις και μεθόδους. Εάν κατανοήσεις τη χρήση του self στις κλάσεις σου, θα είσαι σε θέση να γράψεις πιο ξεκάθαρες, λειτουργικές και ευκολότερες στη συντήρηση κλάσεις τόσο σε δικά σου έργα όσο και στο πλαίσιο συνεργατικών ομαδικών έργων.
Συχνές ερωτήσεις
Τι είναι το self στην Python;το self είναι η πρώτη παράμετρος στις μεθόδους στιγμιοτύπων και αναφέρεται στο τρέχον αντικείμενο.
Γιατί είναι σημαντικό το self;το self επιτρέπει την πρόσβαση στις ιδιότητες και τις μεθόδους του τρέχοντος αντικειμένου.
Μπορώ να χρησιμοποιήσω το self σε μια μέθοδο κλάσης;Ναι, ωστόσο είναι συνηθισμένο να καλείς τη μέθοδο μέσω του αντικειμένου.
Πώς μεταβιβάζεται το self;το self μεταβιβάζεται αυτόματα ως πρώτη παράμετρος στις μεθόδους στιγμιοτύπων.
Τι συμβαίνει αν ξεχάσω το self σε μια μέθοδο;Αν ξεχάσεις το self, δεν μπορείς να έχεις πρόσβαση στις μεταβλητές ή τις μεθόδους στιγμιοτύπου.