Sobes.tech
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.