Sobes.tech
Junior — Middle

Аты-жөніне бір немесе екі сызықша кіретін әдістерді пайдалану нені білдіретінін түсіндіре аласыз ба?

sobes.tech AI

AI-дан жауап

Python-да әдіс немесе атрибут атаулары бір немесе екі астын сызу белгілерімен ерекше мағынаға ие:

  • Атын бастап бір астын сызу белгісі (мысалы, _method) — бұл келісім, ол әдіс немесе атрибут «қорғалған» (protected) деп белгіленгенін білдіреді. Бұл сырттан қол жеткізуді тыймайды, бірақ оны тікелей қолданудан аулақ болу керек екенін көрсетеді.

  • Атын бастап екі астын сызу белгісі (мысалы, __method) name mangling механизмін іске қосады. Бұл әдіс немесе атрибуттың атын интерпретатор өзгертіп, қате қайталанудан сақтайды. Мысалы, __method MyClass класы ішінде _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 арқылы қол жеткізу