Sobes.tech
Junior — Middle

Πώς επιτυγχάνεται στην Python η απόκρυψη της εσωτερικής υλοποίησης ενός αντικειμένου και η απόκρυψη δεδομένων από την εξωτερική πρόσβαση;

sobes.tech AI

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

Στην Python, η απόκρυψη της εσωτερικής υλοποίησης του αντικειμένου και των δεδομένων επιτυγχάνεται μέσω συμβάσεων και μηχανισμών ενθυλάκωσης:

  • Ένα κάτω παύλα (_var) — υποδηλώνει ότι το χαρακτηριστικό ή η μέθοδος προορίζεται για εσωτερική χρήση (προστατευμένο), αλλά τεχνικά είναι προσβάσιμο από έξω.
  • Δύο κάτω παύλες (__var) — οδηγεί σε name mangling (μετατροπή ονόματος), καθιστώντας πιο δύσκολη την πρόσβαση στο χαρακτηριστικό από έξω, π.χ., __var γίνεται _ClassName__var. Αυτό εξυπηρετεί στην αποτροπή τυχαίων αντικαταστάσεων και στην απόκρυψη δεδομένων.

Παράδειγμα:

class MyClass:
    def __init__(self):
        self.public = "προσβάσιμο σε όλους"
        self._protected = "για εσωτερική χρήση"
        self.__private = "κρυφό από εξωτερική πρόσβαση"

obj = MyClass()
print(obj.public)          # προσβάσιμο
print(obj._protected)      # προσβάσιμο, αλλά όχι συνιστώμενο
print(obj._MyClass__private)  # πρόσβαση στο "ιδιωτικό" χαρακτηριστικό μέσω name mangling

Έτσι, στην Python δεν υπάρχει αυστηρή ιδιωτική πρόσβαση, αλλά υπάρχουν συμβάσεις και μηχανισμοί που επιτρέπουν την απόκρυψη δεδομένων από άμεση πρόσβαση από έξω.