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.