Jump to content
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

Question

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 to post
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to post
Share on other 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)
Edited by ArteEN
Link to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148871
    • Total Posts
      644871
×
×
  • Create New...