Форум сайта python.su
Здравствуйте, нужна помощь с решением 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()
from animals import * pets = [Cat("Мурзик", 3), Dog("Шарик", 5) ] for p in pets: p.say() p.run()
Офлайн
collapseЧто такое абстрактный класс? Что такое абстрактный метод?
Класс Pet – абстрактный, он имеет абстрактный метод say.
Офлайн
py.user.nextДа, но мне это задание сдать надо(((
Офлайн
Не надо тебе его сдавать, пусть этот препод и дальше ебётся с новичками, не трать время на него. Он всё равно так и сдохнет, ничего не написав за всю свою жизнь.
Писать абстрактный класс, не зная, что такое абстрактный класс, - это глупость несусветная.
Офлайн
Это всё конечно круто, но у меня сессия у него(
Офлайн
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)
Офлайн