Module (18%)
Section (38%)

Стек - объектный подход: продолжение

Посмотрите - мы добавили два подчеркивания перед именем stackList - ничего больше:

class Stack: def __init__(self): self.__stack_list = [] stack_object = Stack() print(len(stack_object.__stack_list))

Изменение делает программу ошибочной.

Почему?

 

Если у какого-либо компонента класса есть имя, начинающееся с двух символов подчеркивания (__), он становится скрытым - это означает, что к нему можно получить доступ только из класса.

Вы не можете видеть это из внешнего мира. Вот как Python реализует концепцию инкапсуляции.

Запустите программу, чтобы проверить наши предположения - должно возникнуть исключение AttributeError.



Code

class Stack:
def __init__(self):
self.__stackList = []


stackObject = Stack()
print(len(stackObject.__stackList))
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×