i am not managing to inherit the client class with one of the two

Asked

Viewed 46 times

-2

i create a client that will be Pfísica as I do for class Pfisica inherit from class client.

class Cliente:
    def __init__(self,*lista,**D):
        self.codigo   = D.pop('cod','--')
        self.nome     = D.pop('n','--')
        self.fone     = D.pop('f','(--) ----- ----')
        self.data     = D.pop('d','--/--/----')
        self.Endereco = D.pop('end','--')
        self.Cidade   = D.pop('cid','--')
        self.UF       = D.pop('uf','--')
        self.tipo     = D.pop('t', 'PF ou PJ')
        self.cheques  = []
        for x in lista:
            self.cheques.append(x)
    def listaCheque(self):
        return self.cheques
    def adicionacheque(self,novocheque):
        if novocheque not in self.cheques:
            self.cheques.append(novocheque)
    def excluicheque(self,exccheque):
        if exccheque not in self.cheques:
            self.cheques.append(exccheque)


class PFisica:
    def __init__(self,**D):
        self.cliente = Cliente
        self.CPF     = D.pop('cpf','---.---.--- --')
        self.RG      = D.pop('rg','-.---.--- -')
    def getCliente(self):
        return self.cliente
    def emitirFicha(self):
        resposta='Nome: '+self.cliente+'\nCPF: '+self.CPF+'\nRG: '+self.RG+'\nEndereço: '+self.Endereco+'\nCidade: '+self.Cidade+'UF :'+self.UF
        return resposta
    
    
class PJuridica:
    def __init__(self,**D):
        self.cliente = Cliente
        self.CNPJ    = D.pop('cnpj','---.---.---/---- --')
        self.INSC    = D.pop('insc','--')
    def getCliente(self):
        return self.cliente
    def emitirFicha(self):
        resposta='Nome: '+self.cliente+'\nCNPJ: '+self.CNPJ+'\nEndereço: '+self.Endereco+'\nCidade: '+self.Cidade+'UF :'+self.UF
        return resposta
  • 1

    What do you mean by "associate"?

  • You want Pfisica to inherit customer? See here

1 answer

0


To use with inheritance is as follows: its classes have to inherit from the common base class (client), and call the methods of the superclass, using the special call super() - in the if, the only common method between the base and the derived classes is the __init__ , so we just need to use the super():

class Cliente:
    def __init__(self,*lista,**D):
        self.codigo   = D.pop('cod','--')
        self.nome     = D.pop('n','--')
        self.fone     = D.pop('f','(--) ----- ----')
        self.data     = D.pop('d','--/--/----')
        self.Endereco = D.pop('end','--')
        self.Cidade   = D.pop('cid','--')
        self.UF       = D.pop('uf','--')
        self.tipo     = D.pop('t', 'PF ou PJ')
        self.cheques  = []
        for x in lista:
            self.cheques.append(x)
            
    def listaCheque(self):
        return self.cheques
    def adicionacheque(self,novocheque):
        if novocheque not in self.cheques:
            self.cheques.append(novocheque)
    def excluicheque(self,exccheque):
        if exccheque not in self.cheques:
            self.cheques.append(exccheque)


class PFisica(Cliente):
    def __init__(self,**D):
        # extrair dos parâmetros "D" os dados específicos de pessoa física:
        self.CPF     = D.pop('cpf','---.---.--- --')
        self.RG      = D.pop('rg','-.---.--- -')
        # Chamar o __init__ de "cleinte" para completar a inicialização:
        super().__init__(**D)
        
        
    """    
    def getCliente(self):
        # Esse método não faz sentido: uma PFisica "é" um cliente, não tem como obter um cliente separado
        # a partir dela.
        return self.cliente
    """
    
    
    def emitirFicha(self): 
        ...
    
    
class PJuridica(Cliente):
    def __init__(self,**D):
        self.CNPJ    = D.pop('cnpj','---.---.---/---- --')
        self.INSC    = D.pop('insc','--')
        super().__init__(**D)

    def emitirFicha(self):
        resposta='Nome: '+self.cliente+'\nCNPJ: '+self.CNPJ+'\nEndereço: '+self.Endereco+'\nCidade: '+self.Cidade+'UF :'+self.UF
        return resposta

Browser other questions tagged

You are not signed in. Login or sign up in order to post.