Ir para conteúdo
Fórum Script Brasil
  • 0

Não estou conseguido sobrescrever a def valorIcms na classe Residencial. Se alguém poder ajudar, eu agradeço.


Freddy-SP

Pergunta

class Cliente:
    def __init__(self, vb):
        self.ValorBase = vb * (te() + tusd())

        def valorIcms(self):
            return self.ValorBase * icms() #Esse ICMS == 0

        print(self.ValorBase)
        print(valorIcms(self))


class Residencial(Cliente):
    def __init__(self, vb):
        Cliente.__init__(self, vb)

        if vb >= 91:
            def valorIcms(self):
                return self.valorBase * icms_91_200() #Esse ICMS == 0.12


#programa Principal
kwh = int(input('Quantidade gasta de KWH: '))
Residencial(kwh)

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
11 horas atrás, Freddy-SP disse:

class Cliente:
    def __init__(self, vb):
        self.ValorBase = vb * (te() + tusd())

        def valorIcms(self):
            return self.ValorBase * icms() #Esse ICMS == 0

        print(self.ValorBase)
        print(valorIcms(self))


class Residencial(Cliente):
    def __init__(self, vb):
        Cliente.__init__(self, vb)

        if vb >= 91:
            def valorIcms(self):
                return self.valorBase * icms_91_200() #Esse ICMS == 0.12


#programa Principal
kwh = int(input('Quantidade gasta de KWH: '))
Residencial(kwh)

use o super()

def valorIcms(self):
  if vb >= 91:
    return self.valorBase * icms_91_200() #Esse ICMS == 0.12
  
  return super().valorIcms()

 

Link para o comentário
Compartilhar em outros sites

  • 0

mexi em algumas coisas, faça o teste e diga como fica, caso volte a dar erro coloque o resto do script e o valor que esta usando para teste e a saida esperada

class Cliente:
    def __init__(self, vb):
        self.ValorBase = vb * (te() + tusd())
        print(self.ValorBase)
        print(self.valorIcms())

    def valorIcms(self):
        return self.ValorBase * icms() #Esse ICMS == 0



class Residencial(Cliente):
    def __init__(self, vb):
        self.vb = vb
        super().__init__(vb)

    def valorIcms(self):
        if self.vb >= 91:
            return self.ValorBase * icms_91_200() #Esse ICMS == 0.12
        return super().valorIcms()


#programa Principal
kwh = int(input('Quantidade gasta de KWH: '))
a = Residencial(kwh)
Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

  • 0

o __init__ é um iniciador é para um setup basico, você estava usando tambem para definir um metodo

class Foo:
  def __init__(self): 
    def segunda_função(self):
      pass
    
class Foo2:
  def __init__(self):
    pass
  
  def segunda_função(self):
    pass

a segunda alteração é transformar o vb em atributo(self.vb) e usar para validar

em seguida é o uso do super() para deixar o codigo facil de manter

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...