Sobes.tech
Junior — Middle

Εξηγήστε τις διαφορές στη χρήση ενός και διπλού κάτω παύλας στα ονόματα μεταβλητών και μεθόδων στην Python.

sobes.tech AI

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

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

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

Παράδειγμα:

class MyClass:
    def __init__(self):
        self._protected = 1  # σύμβαση: προστατευτικό χαρακτηριστικό
        self.__private = 2   # name mangling

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

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