Deixa eu tentar reformular:
Ao invés de termos dois arquivos sendo um o "descontos.py" e o outro "calculador_de_descontos.py", seria "ruim", no sentido de boas práticas, colocarmos a classe "Calculador_de_Descontos" dentro do arquivo "descontos.py"?
Assim:
# -*- coding: UTF-8 -*-
#../design-patterns-python/descontos.py
class Desconto_por_cinco_itens(object):
def __init__(self, proximo_desconto):
self.__proximo_desconto = proximo_desconto
def calcula(self, orcamento):
if orcamento.total_itens > 5:
return orcamento.valor * 0.1
else:
return self.__proximo_desconto.calcula(orcamento)
class Desconto_por_mais_de_quinhentos_reais(object):
def __init__(self, proximo_desconto):
self.__proximo_desconto = proximo_desconto
def calcula(self, orcamento):
if orcamento.valor > 500.0:
return orcamento.valor * 0.07
else:
return self.__proximo_desconto.calcula(orcamento)
class Sem_desconto(object):
def calcula(self, orcamento):
return 0.0
# CLASSE QUE ESTAVA SEPARADA NO ARQUIVO CALCULADOR_DE_DESCONTOS.PY
class Calculador_de_descontos(object):
def calcula(self, orcamento):
desconto = Desconto_por_cinco_itens(
Desconto_por_mais_de_quinhentos_reais(
Sem_desconto()
)
).calcula(orcamento)
return desconto