Εξηγήστε τις διαφορές στη χρήση ενός και διπλού κάτω παύλας στα ονόματα μεταβλητών και μεθόδων στην 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
Έτσι, ένα μονό κάτω παύλα είναι μια σύμβαση, και διπλό είναι ένας μηχανισμός απόκρυψης ονόματος.