Module (25%)
Section (75%)

Объектный подход: стек с нуля (продолжение)

Это новая функция 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())
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×