Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 2, 2022 22:39:05

collapse
Зарегистрирован: 2021-03-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, не пониимаю как сделать

Здравствуйте, нужна помощь с решением 2-х простых заданий. Пожалуйста, помогите….
Постройте класс Pet (домашнее животное) с двумя скрытыми полями: __name (имя) и __age (возраст). Они должны быть доступны для чтения через свойства name и age и недоступны для записи. Метод gettingOlder увеличивает возраст на 1 год. Класс Pet – абстрактный, он имеет абстрактный метод say.
Постройте два класса-наследника – Cat (кошка) и Dog (собака).Они должны реализовать метод say.
Описания классов должны быть в отдельном модуле animals.py.

 from animals import *
p = Dog("Шарик", 5)
p.gettingOlder()
print( p.name + ":", p.age, "лет")
pets = [ Cat("Мурка", 3), p ]
for p in pets:
  p.say() 
Затем добавьте класс Mammal (млекопитающее) – наследник класса Pet и предок для классов Cat и Dog. Он должен иметь метод run (бежать), который выводит сообщение вида «Вася побежал».
 from animals import * 
pets = [Cat("Мурзик", 3), 
        Dog("Шарик", 5) ]
for p in pets:
  p.say()
  p.run() 

Офлайн

#2 Апрель 2, 2022 23:25:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9976
Репутация: +  856  -
Профиль   Отправить e-mail  

Помогите, не пониимаю как сделать

collapse
Класс Pet – абстрактный, он имеет абстрактный метод say.
Что такое абстрактный класс? Что такое абстрактный метод?
Если не знаешь ответы на эти вопросы (нет в лекциях, например), то выкинь на помойку весь этот курс, который проходишь.



Офлайн

#3 Апрель 2, 2022 23:36:37

collapse
Зарегистрирован: 2021-03-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, не пониимаю как сделать

py.user.next
Да, но мне это задание сдать надо(((

Офлайн

#4 Апрель 3, 2022 13:55:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9976
Репутация: +  856  -
Профиль   Отправить e-mail  

Помогите, не пониимаю как сделать

Не надо тебе его сдавать, пусть этот препод и дальше ебётся с новичками, не трать время на него. Он всё равно так и сдохнет, ничего не написав за всю свою жизнь.

Писать абстрактный класс, не зная, что такое абстрактный класс, - это глупость несусветная.



Офлайн

#5 Апрель 3, 2022 14:03:52

collapse
Зарегистрирован: 2021-03-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, не пониимаю как сделать

Это всё конечно круто, но у меня сессия у него(

Офлайн

#6 Апрель 3, 2022 22:48:55

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1385
Репутация: +  123  -
Профиль   Отправить e-mail  

Помогите, не пониимаю как сделать

collapse
Это всё конечно круто, но у меня сессия у него(
не знаю на сколько правильно, скажете потом что препод сказал
  
from abc import ABC, abstractmethod
 
class Pet(ABC):
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
 
    @property
    def name(self):
        return self.__name
 
    @property
    def age(self):
        return self.__age
 
    @abstractmethod
    def say(self):
        pass
 
    def gettingOlder(self):
        self.__age += 1
 
class Mammal(Pet):
    def run(self):
        print(f'{self.name} побежал')
 
class Dog(Mammal, Pet):
    def __init__(self, name, age):
        super().__init__(name, age)
 
    def say(self):
        print('гав-гав')
 
class Cat(Mammal, Pet):
    def __init__(self, name, age):
        super().__init__(name, age)
 
    def say(self):
        print('мяу-мяу')
 
if __name__ == '__main__':
    p = Dog("Шарик", 5)
    p.gettingOlder()
    print(p.name + ":", p.age, "лет")
    pets = [Cat("Мурка", 3), p]
    for p in pets:
        p.say()
    pets = [Cat("Мурзик", 3),
            Dog("Шарик", 5)]
    for p in pets:
        p.say()
        p.run()

Отредактировано xam1816 (Апрель 3, 2022 22:50:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version