Sobes.tech
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 аркылуу "жеке" мүчөгө кирүү

Ошентип, бир астыңкы сызыкча — салт, эки астыңкы сызыкча — аттын жашыруу механизми.