Freddy-SP Postado Dezembro 25, 2020 Denunciar Share Postado Dezembro 25, 2020 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) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Dezembro 26, 2020 Denunciar Share Postado Dezembro 26, 2020 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() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Freddy-SP Postado Dezembro 27, 2020 Autor Denunciar Share Postado Dezembro 27, 2020 Então... Eu fiz o que você sugeriu, mas continua retornando Zero. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Dezembro 27, 2020 Denunciar Share Postado Dezembro 27, 2020 (editado) 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 Dezembro 27, 2020 por ArteEN Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Freddy-SP Postado Dezembro 28, 2020 Autor Denunciar Share Postado Dezembro 28, 2020 (editado) Funcionou esta forma que você sugeriu. Muito obrigado pela ajuda. Se você souber qual foi o erro, poderia me dizer por favor? Editado Dezembro 28, 2020 por Freddy-SP Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Dezembro 28, 2020 Denunciar Share Postado Dezembro 28, 2020 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Freddy-SP Postado Dezembro 28, 2020 Autor Denunciar Share Postado Dezembro 28, 2020 Entendi. Muito obrigado mais uma vez pela ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Freddy-SP
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
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.