StudyRepo_Synergy/part2_OOP/lesson4/animals.py

68 lines
1.9 KiB
Python
Raw Normal View History

2023-12-03 14:31:48 +03:00
"""
Модуль является результатом выполнения практической
домашней работы по теме "Наследование классов"
Задачу решил через абстрактный класс 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()