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