68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
"""
|
||
Модуль является результатом выполнения практической
|
||
домашней работы по теме "Наследование классов"
|
||
|
||
Задачу решил через абстрактный класс Animal, с абстрактным методом
|
||
make_sound, который обязательно должен быть реализован
|
||
в дочерних классах(иначе будет Error).
|
||
|
||
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
|
||
: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()
|