Форум сайта python.su
568
py.user.next
Мы видим, что проблема в функции acquaintance() - она просто держит ограничения, изначально взятые с потолка (писалась она явно не для этого применения).
class Cat: can_eat_max = 5 can_play_max = 10 class Dog: can_eat_max = 15 can_play_max = 20 def play(pet, minutes): if minutes > pet.can_play_max: print("fail")
class Pet: def play(self, minutes): if minutes > self.can_play_max: raise Error() class Cat(Pet): can_play_max = 10 def play(pet, minutes): try: pet.play(minutes) except Exception as e: print(e)
Отредактировано FishHook (Май 4, 2019 14:44:34)
Офлайн
857
FishHookПобочный эффект в вводе с консоли и выводе на консоль. Если надо будет вводить данные из файла и выводить в файл, что автор будет делать? Правильно, писать новый класс. А почему он будет писать новый класс? Потому что при выводе в файл, эти методы будут ещё и в консоль писать то, что не нужно туда писать, а при вводе из файла эти методы ещё застынут, ожидая ввода с консоли, когда его не будет. Так что это и есть причина написания чистых функций - чтобы просто банально не писать сто похожих кодов, когда можно написать один и использовать его потом как в одной программе, так и в разных.
Где py.user.next увидел побочки я не нашел
Babay82Ты спросил по коду “дайте оценку” - я тебе кратко написал “детский лепет”. Почему же я тебе написал так и почему это очень кратко - потому что по факту тебе нужно сюда переписывать до буквы несколько учебников, так как ты не читал из них ни строчки. Не умея писать даже простые функции (а методы - это функции), ты взялся за следующий этап, ООП и околоООП, где всё это уже надо знать. Когда же ты попросил подробностей, я тебе дал более развёрнуто, но ты опять ничего не понял, потому что у тебя знаний нет и для понимания этого уровня. С чего ты взял-то, что программирование можно изучать с любой точки? Это не литература или история, где можно начинать изучение с любого автора и любого периода, разницы нет. Это ближе к математике, где сначала изучают таблицу умножения, а уже потом изучают квадратные уравнения, не наоборот.
Или ты на форуме для новичков чтобы ядом поплеваться
Отредактировано py.user.next (Май 4, 2019 16:54:54)
Офлайн
568
py.user.nextЯ бы сказал, что это нарушение принципа единичной ответственности, но ИМХО топикстартеру до SOLID еще далеко.
Побочный эффект в вводе с консоли и выводе на консоль. Если надо будет вводить данные из файла и выводить в файл, что автор будет делать? Правильно, писать новый класс.
Офлайн
857
FishHookЭто ошибка зацепления модулей. Из СП понятие. То есть у него класс знает про консоль, хотя должен только общаться с внешним миром через сообщения, в том числе и с консолью (напрямую или опосредованно).
нарушение принципа единичной ответственности
Отредактировано py.user.next (Май 4, 2019 19:44:33)
Офлайн
0
FishHook
По поводу
def __pass_time(self): self.hanger += 3 self.boredom += 3
def ask_number(question): response = None while not response: try: response = int(input(question)) except (TypeError, ValueError): print("Недопустимый ввод") def eat(self): food = ask_number("Сколько корма вы хотите дать питомцу?") if food > 10: print("Я переел и меня стошнило") else: print("Мрр...Спасибо!:)") self.hanger -= food if self.hanger < 0: self.hanger = 0 self.__pass_time() def play(self): fun = ask_number("Сколько времени вы потратите на игру с питомцем?") if fun > 15: print("Вы меня переутомили") else: print("Wowww!!!") self.boredom -= fun if self.boredom < 0: self.boredom = 0 self.__pass_time()
py.user.nextНе пойму , что тебя так зацепило? Я пытаюсь чему то научиться по самоучителю, что-то по мере необходимости черпаю из других источников, прежде чем перейти к следующему этапу прошу вас проверить усвоенный материал, если что не так указать ошибки, теоретически, я мог бы молча себе “чему то” спокойно научиться, начать что то разрабатывать, возможно он даже работало бы(эта же работает), принося время от времени головную боль(скорее всего только мне), но работало бы через ж… и с такой же живучестью. Таких не мало судя по форумам и статьям на хабре(и не только). Но я понимаю что я могу что то не понять, или понять не так, или интерпретировать по своему. Поэтому и обратился к вам. Что -бы подсказали ошибки, А “детский лепет” слишком обобщающая подсказка. Неохота плодить г….
Почему же я тебе написал так и почему это очень кратко - потому что по факту тебе нужно сюда переписывать до буквы несколько учебников, так как ты не читал из них ни строчки. Не умея писать даже простые функции (а методы - это функции), ты взялся за следующий этап, ООП и околоООП, где всё это уже надо знать. Когда же ты попросил подробностей, я тебе дал более развёрнуто, но ты опять ничего не понял, потому что у тебя знаний нет и для понимания этого уровня. С чего ты взял-то, что программирование можно изучать с любой точки? Это не литература или история, где можно начинать изучение с любого автора и любого периода, разницы нет. Это ближе к математике, где сначала изучают таблицу умножения, а уже потом изучают квадратные уравнения, не наоборот.
Офлайн
568
Babay82Мужик, ты чего от нас хочешь то? Ты попросил дать оценку, тебе дали оценку. Ты предлагаешь вслед за тобой читать твои учебники и вникать, что ты знаешь, а чего не знаешь?
повторюсь: это задание после главы по созданию базовых классов. Создание классов на основе классов, взаимодействие между классами и экземплярами классов, наследование в общем само ООП прочая будет дальше. Я с этим пока не знаком
Babay82Нет. Ты пытаешься научиться по самоучителю + форум. Самоучителя тебе, очевидно, не хватает.
Я пытаюсь чему то научиться по самоучителю
Babay82Задавай конкретные вопросы, получишь конкретные ответы. Если хочешь учиться по программе, тогда иди поступай в вуз, нанимай репетитора или покупай онлайн курсы бесполезные и идиотские, тогда у тебя будет наставник, который в курсе твоих компетенций и будет тебя нежно наставлять и направлять в рамках учебного материала за уплоченные ему деньги. От форума ты чего хочешь? Чтобы тебя бесплатно учили? Такого не бывает. Был задан вопрос, был получен ответ. Если ты не понимаешь ответа по недомыслию или потому что твоя программа самообразования построена не лучшим образом, ну это недостатки самообразования, ты сам выбрал этот путь.
Но я понимаю что я могу что то не понять, или понять не так, или интерпретировать по своему. Поэтому и обратился к вам.
Офлайн
857
Babay82Думаю, дело всё-таки в этом. Сколько видел учащихся по книге Доусона (Babay82 десятый уже, не меньше), так вечно фигню какую-то пишут и спрашивают. А начинают с неё полные новички, чтобы научиться чему-то ощутимому. Им кажется, что через неё они войдут в ООП, используют её как введение в ООП для новичков.
Изучаю язык(да и в принципе программирование) по книге М.Доусона.
Отредактировано py.user.next (Май 6, 2019 01:51:06)
Офлайн