Junior — Middle
Pythonдогу өзгөрмөлөр жана ыкмалардын аттарында бир жана эки асты сызыктын колдонулушундагы айырмачылыктарды түшүндүрүңүз.
sobes.tech AI
AIден жооп
Pythonдо, бир гана астыңкы сызыкча (мисалы, _var) өзгөрмөнүн же ыкманың аталышында колдонулганда, ал ички колдонуу үчүн (корголгон) деп белгилөөчү салт болуп саналат жана класс же модулдан тышкары колдонулбашы керек. Бул жөн гана сунуш, интерпретатор кирүүгө тыюу салбайт.
Ики астыңкы сызыкча (мисалы, __var) аталыштын башында name mangling механизмин активдештирет — өзгөрмөнүн же ыкманын аты интерпретатор тарабынан өзгөртүлүп, класс сыртынан кирүүнү кыйындатат. Бул жеке мүчөлөрдү түзүү үчүн колдонулат, аларды кайра жазуу же катаал колдонуу кыйын болот.
Мисал:
class MyClass:
def __init__(self):
self._protected = 1 # салт: корголгон мүчө
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # кирүү мүмкүн, бирок сунушталбайт
# print(obj.__private) # AttributeError ката чыгарат
print(obj._MyClass__private) # name mangling аркылуу "жеке" мүчөгө кирүү
Ошентип, бир астыңкы сызыкча — салт, эки астыңкы сызыкча — аттын жашыруу механизми.