Стек - объектный подход: продолжение
Любые изменения, внесенные Вами в конструктор, который изменяет состояние параметра self
, будут отражать вновь созданный объект.
Это означает, что Вы можете добавить любое свойство к объекту, и оно будет оставаться там до тех пор, пока объект не завершит свою жизнь или свойство не будет явно удалено.
Теперь давайте добавим только одно свойство в новый объект - список для стека. Мы назовем его stackList
.
Так же, как здесь:
class Stack:
def __init__(self):
self.stack_list = []
stack_object = Stack()
print(len(stack_object.stack_list))
Примечание:
- мы использовали точечную нотацию, как при вызове методов; это общее соглашение для доступа к свойствам объекта - вам нужно дать имя объекту, поставить точку (
.
) после него и указать имя нужного свойства; не используйте скобки! Вы не хотите вызывать метод - Вы хотите получить доступ к свойству; - если Вы устанавливаете значение свойства в первый раз (как в конструкторе), Вы создаете его; с этого момента объект получил свойство и готов использовать его значение;
- мы сделали что-то большее в коде - мы попытались получить доступ к свойству
stackList
вне класса сразу после создания объекта; мы хотим проверить текущую длину стека - добились ли мы успеха?
Да - код дает следующий вывод:
0
output
Это не то, чего мы хотим от стека. Мы предпочитаем, чтобы stackList
был скрыт от внешнего мира. Это возможно?
Да, и это просто, но не интуитивно понятно.