Объектный подход: стек с нуля (продолжение)
Это новая функция pop
:
def pop(self):
val = Stack.pop(self)
self.__sum -= val
return val
К этому моменту мы определили переменную __sum
, но мы не предоставили метод для получения ее значения. Кажется, он скрыт. Как мы можем раскрыть его и сделать так, чтобы он по-прежнему защищал переменную от изменений?
Мы должны определить новый метод. Мы назовем его getSum
. Его единственной задачей будет вернуть значение __sum
.
Вот он:
def get_sum(self):
return self.__sum
Итак, давайте посмотрим на программу в редакторе. Там полный код класса. Мы можем проверить его работу сейчас, и мы делаем это с помощью нескольких дополнительных строк кода.
Как видите, мы добавляем в стек пять последующих значений, выводим их сумму и убираем их все из стека.
Хорошо, это было очень краткое введение в объектное программирование Python. В ближайшее время мы расскажем вам обо всем подробнее.
Code
class Stack:def __init__(self):
self.__stack_list = []
def push(self, val):
self.__stack_list.append(val)
def pop(self):
val = self.__stack_list[-1]
del self.__stack_list[-1]
return val
class AddingStack(Stack):
def __init__(self):
Stack.__init__(self)
self.__sum = 0
def get_sum(self):
return self.__sum
def push(self, val):
self.__sum += val
Stack.push(self, val)
def pop(self):
val = Stack.pop(self)
self.__sum -= val
return val
stack_object = AddingStack()
for i in range(5):
stack_object.push(i)
print(stack_object.get_sum())
for i in range(5):
print(stack_object.pop())