Junior — Middle
Vysvětlete rozdíly v používání jednoho a dvojitého podtržítka v názvech proměnných a metod v Pythonu.
sobes.tech AI
Odpověď od AI
V Pythonu je podtržítko na začátku jména proměnné nebo metody (například _var) konvencí, která naznačuje, že toto jméno je určeno pro interní použití (chráněné) a nemělo by být používáno mimo třídu nebo modul. Je to pouze doporučení, interpretér neomezuje přístup.
Dvojité podtržítko na začátku jména (například __var) aktivuje mechanismus name mangling — jméno proměnné nebo metody je změněno interpretérem, aby ztížil přístup zvenčí třídy. To se používá k vytváření soukromých atributů, které jsou těžko přepsatelné nebo náhodně použitelné v podtřídách.
Příklad:
class MyClass:
def __init__(self):
self._protected = 1 # konvence: chráněný atribut
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # přístup možný, ale nedoporučuje se
# print(obj.__private) # způsobí chybu AttributeError
print(obj._MyClass__private) # přístup k "soukromému" atributu přes name mangling
Tedy, jednoduché podtržítko je konvence, dvojité je mechanismus skrytí jména.