Leg uit wat het verschil is tussen het gebruik van één en dubbele onderstreping in variabelen- en methodenamen in Python.
sobes.tech AI
Antwoord van AI
In Python is een enkele underscore aan het begin van de naam van een variabele of methode (bijvoorbeeld _var) een conventie die aangeeft dat deze naam bedoeld is voor intern gebruik (beschermd) en niet buiten de klasse of module gebruikt moet worden. Het is slechts een aanbeveling, de interpreter verbiedt geen toegang.
Een dubbele underscore aan het begin van de naam (bijvoorbeeld __var) activeert het name mangling mechanisme — de naam van de variabele of methode wordt door de interpreter gewijzigd om toegang van buiten de klasse te bemoeilijken. Dit wordt gebruikt om private attributen te creëren die moeilijk te overschrijven of per ongeluk te gebruiken zijn in subklassen.
Voorbeeld:
class MyClass:
def __init__(self):
self._protected = 1 # conventie: beschermd attribuut
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # toegang mogelijk, maar niet aanbevolen
# print(obj.__private) # zal een AttributeError veroorzaken
print(obj._MyClass__private) # toegang tot "private" attribuut via name mangling
Dus, een enkele underscore is een conventie, dubbele is een mechanisme voor naamverbergings.