Sobes.tech
Junior — Middle

Izskaidrojiet atšķirības vienkāršas un dubultas apakšsvītras lietošanā Python mainīgo un metožu nosaukumos.

sobes.tech AI

Atbilde no AI

Pythonā vienreizējs apakšsvītra sākumā (piemēram, _var) ir konvencija, kas norāda, ka šis nosaukums ir paredzēts iekšējai lietošanai (aizsargāts) un tam nevajadzētu tikt izmantotam ārpus klases vai moduļa. Tas ir tikai ieteikums, interpretators neierobežo piekļuvi.

Divreiz apakšsvītra sākumā (piemēram, __var) aktivizē name mangling mehānismu — mainīgā vai metodes nosaukums tiek mainīts interpretatorā, lai sarežģītu piekļuvi no ārpuses. To izmanto, lai izveidotu privātus atribūtus, kuri ir grūti pārrakstāmi vai nejauši lietojami apakšklasēs.

Piemērs:

class MyClass:
    def __init__(self):
        self._protected = 1  # konvencija: aizsargāts atribūts
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # piekļuve iespējama, bet neiesaka
# print(obj.__private)   # izraisīs AttributeError
print(obj._MyClass__private)  # piekļuve "privātajam" atribūtam caur name mangling

Tādējādi, vienkāršais apakšsvītra ir konvencija, bet dubultā — nosaukuma slēpšanas mehānisms.