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()
|