oop_4 homework
parent
5fc185d629
commit
6f6f705260
|
@ -0,0 +1,21 @@
|
||||||
|
Домашнее задание 4.
|
||||||
|
|
||||||
|
Создайте родительский класс `Animal` с атрибутами
|
||||||
|
`name` и `species`. Дайте им также метод `make_sound()`,
|
||||||
|
который выводит звук, издаваемый животными.
|
||||||
|
|
||||||
|
|
||||||
|
Создайте подклассы `Dog` и `Cat`,
|
||||||
|
которые наследуют от класса `Animal`.
|
||||||
|
Дайте каждому из них свой собственный метод
|
||||||
|
`make_sound()`, который выводит соответствующий
|
||||||
|
звук (`"Гав"` для собаки и `"Мяу"` для кота).
|
||||||
|
|
||||||
|
|
||||||
|
Добавьте дополнительные методы и атрибуты в подклассы.
|
||||||
|
Например, метод `bark()` для собаки, который выводит
|
||||||
|
сообщение о лае, и метод `purr()` для кота,
|
||||||
|
который выводит сообщение о мурлыкании.
|
||||||
|
Можно также добавить атрибуты, специфичные для каждого
|
||||||
|
класса.
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
"""
|
||||||
|
Модуль является результатом выполнения практической
|
||||||
|
домашней работы по теме "Наследование классов"
|
||||||
|
|
||||||
|
Задачу решил через абстрактный класс 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()
|
Loading…
Reference in New Issue