From 6f6f705260d820841d26b980fa522b4a934f2a04 Mon Sep 17 00:00:00 2001 From: pi3c Date: Sun, 3 Dec 2023 14:31:48 +0300 Subject: [PATCH] oop_4 homework --- part2_OOP/lesson4/README.md | 21 +++++++++++ part2_OOP/lesson4/animals.py | 67 ++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 part2_OOP/lesson4/README.md create mode 100644 part2_OOP/lesson4/animals.py diff --git a/part2_OOP/lesson4/README.md b/part2_OOP/lesson4/README.md new file mode 100644 index 0000000..8d2bead --- /dev/null +++ b/part2_OOP/lesson4/README.md @@ -0,0 +1,21 @@ +Домашнее задание 4. + +Создайте родительский класс `Animal` с атрибутами +`name` и `species`. Дайте им также метод `make_sound()`, +который выводит звук, издаваемый животными. + + +Создайте подклассы `Dog` и `Cat`, +которые наследуют от класса `Animal`. +Дайте каждому из них свой собственный метод +`make_sound()`, который выводит соответствующий +звук (`"Гав"` для собаки и `"Мяу"` для кота). + + +Добавьте дополнительные методы и атрибуты в подклассы. +Например, метод `bark()` для собаки, который выводит +сообщение о лае, и метод `purr()` для кота, +который выводит сообщение о мурлыкании. +Можно также добавить атрибуты, специфичные для каждого +класса. + diff --git a/part2_OOP/lesson4/animals.py b/part2_OOP/lesson4/animals.py new file mode 100644 index 0000000..8886689 --- /dev/null +++ b/part2_OOP/lesson4/animals.py @@ -0,0 +1,67 @@ +""" +Модуль является результатом выполнения практической +домашней работы по теме "Наследование классов" + +Задачу решил через абстрактный класс 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()