StudyRepo_Synergy/part2_OOP/lesson4/animals.py

68 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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