Полиморфна ли эта функция? Не совсем понимаю сущность полиморфизма, помогите пожалуйста разобраться. Правильно ли я понимаю, что метод 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. использовать аргумент для динамического выполнения функции(это реализовано в приведённом мной выше примере)
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.
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.