Junior — Middle
Pythonдо жеке өзгөрмөлөргө жана ыкмаларга кирүү мүмкүнбү, жана бул кандай ишке ашырылат?
sobes.tech AI
AIден жооп
Pythonда, кээ бир башка тилдердегидей, чындыкта жеке өзгөрмөлөр жана ыкмалар жок. Бирок, классдын жеке мүчөлөрүн белгилөө үчүн бир же эки асты сызык колдонулат:
- Бир асты сызык
_var— бул жөн гана келишим, өзгөрмө же ыкма ички жана класс сыртында колдонууга арналган эмес деп белгилейт. - Эки асты сызык
__varname mangling механизмин активдештирет, ал өзгөрмөнүн атын класс ичинде өзгөртүп, анын сырттан жеткиликтүүлүгүн кыйындатат.
Ошентсе да, мындай "жеке" өзгөрмөлөргө алардын өзгөртүлгөн атын билсеңер, жетүүгө болот. Мисалы:
class MyClass:
def __init__(self):
self.__private_var = 42
obj = MyClass()
# Түз жетүү ката алып келет:
# print(obj.__private_var) # AttributeError
# Бирок, name mangling аркылуу жетүүгө болот:
print(obj._MyClass__private_var) # 42 чыгарат
Ошентип, Pythonдеги жеке мүчөлүк — бул көбүрөөк келишим жана жеткиликтүүлүктү кыйындатуучу механизм, катуу коргоо эмес.