""" Модуль является результатом выполнения практической домашней работы по теме "Наследование классов" Задачу решил через абстрактный класс Animal, с абстрактным методом make_sound, который обязательно должен быть реализован в дочерних классах(иначе будет Error). :copyright: Сергей Ванюшкин :git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git :license: MIT 2023г. """ from abc import ABC, abstractmethod class Animal(ABC): def __init__(self, **kwargs): self.name = kwargs.get("name") or "Безымянное" self.species = kwargs.get("species") or "Чудище заморское" @abstractmethod def make_sound(self): pass class Dog(Animal): def make_sound(self): return "Гав" def bark(self): return "Лай,лай,лАй, лалаайлай..." class Cat(Animal): def make_sound(self): return "Мяу" def purr(self): return "Мурмурмур" class SomeAnimal(Animal): def make_sound(self): return "Кряхтит, скрипит, зубами клацает" if __name__ == "__main__": animals = ( Dog(name="Rex", species="Собакен обычный"), Cat(name="Кузя", species="Котяра хитрожопый"), Dog(name="Галкин", species="Двортерьер Кусучий"), SomeAnimal(), ) for an in animals: print("Досье") print("Вид:", an.species) print("кличка:", an.name) print("говорит:", an.make_sound()) if isinstance(an, Cat): print(an.name, "доволен:", an.purr()) elif isinstance(an, Dog): print(an.name, "злой пес:", an.bark()) print()