Аты-жөніне бір немесе екі сызықша кіретін әдістерді пайдалану нені білдіретінін түсіндіре аласыз ба?
sobes.tech AI
AI-дан жауап
Python-да әдіс немесе атрибут атаулары бір немесе екі астын сызу белгілерімен ерекше мағынаға ие:
-
Атын бастап бір астын сызу белгісі (мысалы,
_method) — бұл келісім, ол әдіс немесе атрибут «қорғалған» (protected) деп белгіленгенін білдіреді. Бұл сырттан қол жеткізуді тыймайды, бірақ оны тікелей қолданудан аулақ болу керек екенін көрсетеді. -
Атын бастап екі астын сызу белгісі (мысалы,
__method) name mangling механизмін іске қосады. Бұл әдіс немесе атрибуттың атын интерпретатор өзгертіп, қате қайталанудан сақтайды. Мысалы,__methodMyClassкласы ішінде_MyClass__methodтүрінде өзгереді. -
Атын бастап және соңында екі астын сызу белгісі (мысалы,
__init__) — бұл Python-ның арнайы әдістері, олар «магиялық» немесе «дундэр» (double underscore) әдістері деп аталады. Олар ерекше мінез-құлыққа ие, ол тілмен анықталады.
Мысал:
class MyClass:
def __init__(self):
self._protected = 1
self.__private = 2
def __private_method(self):
print("Бұл жеке әдіс")
obj = MyClass()
print(obj._protected) # Қол жеткізу мүмкін, бірақ ұсынылмайды
# print(obj.__private) # Қате AttributeError
print(obj._MyClass__private) # name mangling арқылы қол жеткізу