Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

TypeError: calcula() takes 1 positional argument but 2 were given

Olá!

Fiz exatamente como está no vídeo mas me dá um TypeError que não sei onde estou errando:

impostos.py
class ICMS(object):
    def calcula(orcamento):
        return orcamento.valor * 0.1

class ISS(object):
    def calcula(orcamento):
        return orcamento.valor * 0.06

-----
calculador_de_impostos.py

from impostos import ISS, ICMS

class Calculador_de_impostos(object):

  def realiza_calculo(self, orcamento, imposto):
      imposto_calculado = imposto.calcula(orcamento)
      print(imposto_calculado)


if __name__ == '__main__':
    from orcamento import Orcamento

    calculador = Calculador_de_impostos()
    orcamento = Orcamento(500.0)
    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())

----
Traceback (most recent call last):
  File "C:/Users/felipedias/PycharmProjects/designerPattern/calculador_de_impostos.py", line 15, in <module>
    calculador.realiza_calculo(orcamento, ISS())
  File "C:/Users/felipedias/PycharmProjects/designerPattern/calculador_de_impostos.py", line 6, in realiza_calculo
    imposto_calculado = imposto.calcula(orcamento)
TypeError: calcula() takes 1 positional argument but 2 were given

Obrigado

1 resposta
solução!

Resolvido... faltava o self nas classes ICMS e ISS.

Obrigado

impostos.py
class ICMS(object):
    def calcula(self, orcamento):
        return orcamento.valor * 0.1

class ISS(object):
    def calcula(self, orcamento):
        return orcamento.valor * 0.06