Форум сайта python.su
0
Пытаюсь написать пример, который будет соответствовать принципам единой ответственности и открытости/закрытости. вот неправильный пример:
#!/usr/bin/env python3 class Product: def __init__(self, title): self.title = title def setPrice(self, price): try: if price <= 0: raise Exception('wrong price!') self.price = price except Exception as e: print('error: ', e) product = Product('phone') product.setPrice(-10)
#!/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.fillLog(e) class Logger: def __init__(self): self.log = [] def makeLog(self, message): print('error: ', message) def fillLog(self, message): self.log.append(message) logger = Logger() product = Product('phone', logger) product.setPrice(-10)
Отредактировано zlodiak (Март 17, 2019 10:32:09)
Офлайн
568
zlodiak
Посмотрите как собственно реализован модуль logging в питоне и вопросы отпадут. Способ логгирования задается на уровне конфига, а не хардкодится в классе.
Офлайн