|
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
|
||||||
Класс: Создайте класс, осуществляющий подсчет и изменение числа книг.26.03.2018, 20:44. Показов 10537. Ответов 6
Метки нет (Все метки)
Привет форумчане. Задачу решил, и даже проверку проходит , но код не нравится. Подскажите как можно было решить более правильно и в каком месте. ПС когда смотрю туториалы, читаю про ООП, разбитаю чужую задачу вроде все понятно, а как самому написать, возникают траблы. Да и так как я решил , не вижу вообще зачем тут нужно ООП(В плане приемущества решения данной парадигмой).
Вот задача: Создайте класс, осуществляющий подсчет и изменение числа книг. Названия книг, их количество считываются одной строкой вида 'Boogeyman 66 Battleground 50', число книг - произвольное. В классе должен быть реализован конструктор, деструктор, методы просмотра числа, взятия и возвращения книг. Реализовать вывод начальных значений, взятие по 1 книге, возвращение по 1 книге с выводом текущего числа после вызова каждого из методов, меняющих значение книг. Типичный ответ одной строкой: 'Boogeyman 66 65 66 Battleground 50 49 50'. Пример входных данных: Boogeyman 66 Battleground 50 Пример выходных данных: Boogeyman 66 65 66 Battleground 50 49 50 Вот код:
0
|
||||||
| 26.03.2018, 20:44 | |
|
Ответы с готовыми решениями:
6
Создать класс, представляющий обучающий класс ClassRoom. Создайте класс ученик Pupil. В теле класса создайте методы void Создайте класс точка, имеющая координаты. Класс эллипсов, и класс кругов. Определить иерархию типов Создайте класс, представляющий учебную группу Group. Создайте класс студент Student |
|
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
|
|
| 26.03.2018, 21:35 | |
|
А я вот вообще не понял задачу) И решения тоже не понимаю)
26 строка, нет смысла преобразовывать результат .split() в list() потому что split всегда вернет list. 13, 17, 20 строки, нет смысла хранить в классе свойство book так как оно каждый раз перезаписывается, а вот число на которое ты увеличиваешь или уменьшаешь входные данные в методах take_* и put_* лучше вынести в константу класса. Также из-за того что ты везде в методах класса назвал входной аргумент book совершенно непонятно какой тип дынных в него передавать. Когда переопределяешь методы супер-класса то вместо pass вызывай метод супер-класса, если ты конечно хочешь что бы он выполнился. И по идее можно было все 3 твоих метода класса объединить в один __getattr__(self, attr)
1
|
|
|
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
|
|
| 26.03.2018, 21:42 [ТС] | |
|
0
|
|
|
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
|
||
| 26.03.2018, 22:55 | ||
|
2. деструктор. ммм... в питоне в таком классе он не имеет смысла, в детали сборщика мусора здесь вдаваться не место 3. «класс, осуществляющий подсчет и изменение числа книг». КНИГ а не конкретной КНИГИ. А в данной реализации Ваш класс это просто избыточная обертка к числовой переменной, не реализующая никакой дополнительной логики и не предоставляющая ожидаемый уровень абстракции. Ну и наконец, задание Ваше не особо хорошо сформулировано. я бы даже сказал – отвратительно сформулировано. Ничего толком не понятно. Добавлено через 56 минут если привести задачу к более-менее логичному виду, то ее решением будет простой подкласс dict, в котором надо будет реализовать: а) дополнительный способ инициализации из строки вида «name0 count0 name1 count1 …» примерно таким образом: l=text.split()б) методы инкремента и декремента типа def take1(self, name): self[name] -= 1 и def put1(self, name): self[name] += 1
1
|
||
|
Просто Лис
|
||||||
| 27.03.2018, 06:08 | ||||||
|
В первую очередь, когда создаешь класс, ты должен подумать:
1) а какие поля будут у класса? 2) их названия. 3) их типы (строка, целое, float, список, словарь итд) 4) видимость (public, protected, private). (В питоне, пример: self.books, self._books, self.__books). А питоне принято объявлять все поля в инициализаторе (в __init__)
1
|
||||||
|
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 11
|
||||||
| 03.04.2020, 14:24 | ||||||
|
тоже этот курс прохожу тихонько
0
|
||||||
|
0 / 0 / 0
Регистрация: 09.09.2021
Сообщений: 1
|
||||||
| 09.09.2021, 18:37 | ||||||
|
Ужасно составлено и сформулировано задание.
0
|
||||||
| 09.09.2021, 18:37 | |
|
Помогаю со студенческими работами здесь
7
Класс Phone. a) Создайте класс Phone, который содержит переменные number, model и weight. б) Создайте три экземпляра это
Создайте класс, описывающий и реализующий класс-наследник класса треугольник Создайте класс «Растение» и класс, который от него наследуется - «Одуванчик» Создайте класс Квадрат, протестируйте созданный класс в методе Main() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|