Модуль 1.5 Введение в классы
В какой момент начинается исполнение конструктора класса?
При создании каждого экземпляра класса
Какие числа будут выведены в результате выполнения данного кода?
class A: def __init__(self, val=0): self.val = val def add(self, x): self.val += x def print_val(self): print(self.val) a = A() b = A(2) c = A(4) a.add(2) b.add(2) a.print_val() b.print_val() c.print_val()Описание:
В коде определен классA
, который содержит три метода:__init__
: Конструктор класса, который инициализирует объект класса. Принимает аргументval
(по умолчанию 0) и устанавливает его в качестве атрибутаval
для создаваемого объекта.add
: Метод, который принимает аргументx
и увеличивает значение атрибутаval
на значениеx
.print_val
: Метод, который выводит текущее значение атрибутаval
объекта.
Затем создаются три объекта классаA
:a
,b
, иc
с разными начальными значениями. Вызываются методыadd
для объектовa
иb
, изменяя их значения. Затем вызываются методыprint_val
для каждого объекта, чтобы вывести их текущие значения на экран.
Это связано с тем, что у объектаa
значениеval
было установлено в 0 по умолчанию, затем было увеличено на 2 и еще на 2, что дало 4. Объектb
был создан с начальным значением 2, и затем его значение было увеличено на 2, также становясь равным 4. Объектc
был создан с начальным значением 4 и не подвергался изменениям, поэтому его значение осталось 4.
2, 4, 4
Реализуйте класс MoneyBox, для работы с виртуальной копилкой.
Каждая копилка имеет ограниченную вместимость, которая выражается целым числом – количеством монет, которые можно положить в копилку. Класс должен поддерживать информацию о количестве монет в копилке, предоставлять возможность добавлять монеты в копилку и узнавать, можно ли добавить в копилку ещё какое-то количество монет, не превышая ее вместимость.
Описание:
Данный код представляет собой реализацию классаMoneyBox
для работы с виртуальной копилкой. Класс имеет три метода:
Конструктор (__init__
): Принимает аргументcapacity
, который представляет собой вместимость копилки. В начале создания копилки количество монет устанавливается в 0.
Методcan_add(self, v):
Проверяет, можно ли добавитьv
монет в копилку, не превышая ее вместимость. ВозвращаетTrue
, если добавление возможно, иFalse
в противном случае.
Методadd(self, v):
Добавляетv
монет в копилку при условии, что это возможно с учетом вместимости. Использует методcan_add
для проверки.
Этот класс предоставляет удобный интерфейс для работы с копилкой, обеспечивая контроль за вместимостью и возможностью добавления монет.
class MoneyBox: def __init__(self, capacity): # конструктор с аргументом – вместимость копилки self.capacity = capacity self.coins = 0 def can_add(self, v): # True, если можно добавить v монет, False иначе return self.coins + v <= self.capacity def add(self, v): # положить v монет в копилку if self.can_add(v): self.coins += v
Вам дается последовательность целых чисел и вам нужно ее обработать и вывести на экран сумму первой пятерки чисел из этой последовательности, затем сумму второй пятерки, и т. д.
Но последовательность не дается вам сразу целиком. С течением времени к вам поступают её последовательные части. Например, сначала первые три элемента, потом следующие шесть, потом следующие два и т. д.
Реализуйте класс Buffer, который будет накапливать в себе элементы последовательности и выводить сумму пятерок последовательных элементов по мере их накопления.
Описание:
Этот код представляет собой реализацию классаBuffer
для обработки последовательных частей числовой последовательности и вывода суммы пятерок элементов по мере их добавления.
Конструктор (__init__
): Инициализирует объект класса. Создается пустой буфер (self.buffer
), который будет использоваться для хранения последовательных элементов.
Методadd(self, *a):
Добавляет следующую часть последовательности в буфер. Используетextend
для добавления элементов в конец буфера. После добавления проверяет, если в буфере уже накопилось пять элементов или более, то выводит сумму первых пятерок элементов и удаляет их из буфера.
Методget_current_part(self):
Возвращает сохраненные в текущий момент элементы последовательности в порядке, в котором они были добавлены.
Этот класс обеспечивает эффективное добавление элементов последовательности и вывод суммы пятерок элементов по мере их поступления.
class Buffer: def __init__(self): # конструктор без аргументов self.buffer = [] def add(self, *a): # добавить следующую часть последовательности self.buffer.extend(a) while len(self.buffer) >= 5: print(sum(self.buffer[:5])) self.buffer = self.buffer[5:] def get_current_part(self): # вернуть сохраненные в текущий момент элементы последовательности # в порядке, в котором они были добавлены return self.buffer
Какие числа будут выведены в результате выполнения данного кода?
class A: val = 1 def foo(self): A.val += 2 def bar(self): self.val += 1 a = A() b = A() a.bar() a.foo() c = A() print(a.val) print(b.val) print(c.val)Описание:a.bar()
: Увеличивает значениеval
объектаa
(теперьa.val
равно 2).a.foo()
: Увеличивает значениеval
в классеA
(теперьA.val
равно 3).
Создается новый объектc
, который наследует значениеval
из классаA
. Так чтоc.val
также равно 3.
2, 3, 3
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы