Module (17%)
Section (31%)

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

Любые изменения, внесенные Вами в конструктор, который изменяет состояние параметра self, будут отражать вновь созданный объект.

Это означает, что Вы можете добавить любое свойство к объекту, и оно будет оставаться там до тех пор, пока объект не завершит свою жизнь или свойство не будет явно удалено.

Теперь давайте добавим только одно свойство в новый объект - список для стека. Мы назовем его stackList.

Так же, как здесь:

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

Примечание:

  • мы использовали точечную нотацию, как при вызове методов; это общее соглашение для доступа к свойствам объекта - вам нужно дать имя объекту, поставить точку (.) после него и указать имя нужного свойства; не используйте скобки! Вы не хотите вызывать метод - Вы хотите получить доступ к свойству;
  • если Вы устанавливаете значение свойства в первый раз (как в конструкторе), Вы создаете его; с этого момента объект получил свойство и готов использовать его значение;
  • мы сделали что-то большее в коде - мы попытались получить доступ к свойству stackList вне класса сразу после создания объекта; мы хотим проверить текущую длину стека - добились ли мы успеха?
 

Да - код дает следующий вывод:

0

output

 

Это не то, чего мы хотим от стека. Мы предпочитаем, чтобы stackList был скрыт от внешнего мира. Это возможно?

Да, и это просто, но не интуитивно понятно.



Code

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

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