Вопрос пользователя Андрей Смагин в уроке «Инициализация и протоколы», курс «Python: Введение в ООП»

Андрей Смагин

Как выходит такое значение в тестах?

c = Counter()
    assert c.inc().inc(5).dec(2).value == 4
    d = c.inc(100)
    assert d.dec().value == 99

0 + 1 + 5 - 2 = 4

дальше ведь идет продолжение: 4 + 100 = 104

104 - 1 = 103

где тут 99?

1 0

Aleksei Pirogov

Каждый вызов метода .inc() или .dec() порождает новый счётчик с новым значением. Счётчик же, в самом начале записанный в c, всегда сохраняет изначальное значение 0. Поэтому при создании счётчика d через добавление к нулю ста, счётчик d получает значение 0 + 100 = 100. А 100 - 1 это уже 99.

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Похожие вопросы

Andrey 31 марта 2021 →

Я не знаю таких плохих слов, чтобы описать насколько сильно хочется пройтись по Алексею. Пока еще мягко буд...

Vitalii Paprotskyi 20 августа 2020 →

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