Полиморфна ли эта функция? Не совсем понимаю сущность полиморфизма, помогите пожалуйста разобраться. Правильно ли я понимаю, что метод Logger.makeLog() является полиморфным?#!/usr/bin/env python3
class Product:
def __init__(self, title, logger):
self.title = title
self.logger = logger
def setPrice(self, price):
try:
if price <= 0: raise Exception('wrong price!')
self.price = price
except Exception as e:
self.logger.makeLog(e)
class Logger:
def __init__(self, type):
self.log = []
self.type = type
def makeLog(self, message):
getattr(self, self.type)(message)
def printLog(self, message):
print('error: ', message)
def fillLog(self, message):
self.log.append(message)
logger = Logger('printLog')
product = Product('phone', logger)
product.setPrice(-10)
Я понимаю полиморфизм так:Если функция в зависимости от полученного аргумента выполняет различные действия, то она полиморфна. При этом могу быть следующие варианты:
1. имеет значение количество аргументов(в python это не работает, но можно эмулировать при помощи условного оператора)
2. имеет значение тип переданного аргумента(в python этого нет, но тоже можно эмулировать при помощи условного оператора)
3. использовать аргумент для динамического выполнения функции(это реализовано в приведённом мной выше примере)

21 Авг 2019 в 06:58
172 +1
0
Ответы
1

Yes, you are correct. The method Logger.makeLog() in the given code example exhibits polymorphism. Polymorphism in object-oriented programming allows objects of different classes to be treated as objects of a common superclass (or interface) and execute methods specific to their own class.

In this case, the makeLog() method in the Logger class dynamically calls either the printLog() or fillLog() method based on the type of logging specified during the initialization of the Logger object. This flexibility in method invocation based on the type of object or parameters passed can be considered an example of polymorphism.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир