Не существует неявного this->
в Python, как у вас в C / C ++ и т. Д. Вы должны вызвать его на self
.
class Foo:
def __bar(self, arg):
#do something
def baz(self, arg):
self.__bar(arg)
Эти методы не являются действительно закрытыми. Когда вы начинаете имя метода с двух подчеркиваний, Python делает некоторые искажения имени, чтобы сделать его «закрытым», и это все, что он делает, он не предписывает ничего, как другие языки. Если вы определите __bar
для Foo
, он все еще будет доступен снаружи объекта через Foo._Foo__bar
. Например, можно сделать это:
f = Foo()
f._Foo__bar('a')
Это также объясняет «нечетный» идентификатор в сообщении об ошибке, которое вы получили.
Вы можете найти его here
в документации.