Я новичок в python и просто пытался понять, как в нем работает объектно-ориентированное программирование.Я читал, что использование двойного _ (подчеркивание) перед переменной означает, что ее значение не может быть изменено за пределами класса.Чтобы проверить это, я попытался запустить следующий фрагмент.
class a:
def set_value(self,x):
self.__x = x
def get_value(self):
return self.__x
a_obj = a()
a_obj.set_value(10)
a_obj.__x = 1
print a_obj.__x
print a_obj.get_value()
Результат этого будет
1
10
Я не понимаю этого поведения.Когда я проверяю идентификатор обеих переменных, он становится другим.Я знаю, что существует концепция искажения имени, но я не до конца понимаю, действительно ли то, что я делаю, таково.