Inheritance in classes

Asked

Viewed 72 times

0

I have a challenge to create a small system in Python that manages associations in a club. For this, I created the following class:

class Carteira:
    def __init__(self,numero,atividade,bilhete):
        self.numero = numero
        self.atividade = atividade
        self.bilhete = bilhete

    ##SETTERS##

    def set_numero(self,numero):
        self.numero = numero
    def set_atividade(self,atividade):
        self.atividade = atividade
    def set_bilhete(self,bilhete):
        self.bilhete = bilhete

    ##GETTERS##

    def get_numero(self):
        return self.numero
    def get_atividade(self):
        return self.atividade
    def get_bilhete(self):
        return self.bilhete

class ControleClube(Carteira):
    def __init__(self, numero, atividade, bilhete):
        super().__init__(numero,atividade,bilhete)
        self.lista_de_socios = []

    ##SETTERS##
    def set_lista_de_socios(self, lista_de_socios):
        self.lista_de_socios = lista_de_socios
    ##GETTERS##
    def get_lista_de_socios(self):
        return self.lista_de_socios

    ##METODOS##
    def acrescenta_lista_socio(self, Carteira):
        self.lista_de_socios.append((self.numero, self.bilhete))

    def atualiza_lista_socios(self,Carteira):
        if (self.numero, self.bilhete) not in self.lista_de_socios:
            if self.atividade == True:
                lista_de_socios.append((self.numero, self.bilhete))
            else:
                pass
        if (self.numero, self.bilhete) in self.lista_de_socios:
            if self.atividade == False:
                lista_de_socios.remove((self.numero, self.bilhete))
        return self.lista_de_socios

carteira = Carteira(2, True, 23)
carteira.set_numero(23)
carteira.set_atividade(True)
carteira.set_bilhete(2)
lista_socios = ControleClube(2, True, 23)
lista_socios.acrescenta_lista_socio(carteira)
carteira02 = Carteira(3, True, 24)
lista_socios.acrescenta_lista_socio(carteira02)
print(lista_socios.get_lista_de_socios())

However, when I ask to store another partner on the membership list, he duplicates the data of the first registered partner, and does not record the new one. What’s wrong with that code?

  • 2

    Let’s take parts. 1) Why class ControleClube inherits Carteira? 2) Why the class ControleClube has several methods that receive a parameter called Carteira unused?

  • She inherits Wallet because it is a way to handle the recorded data. Wallet serves to register a new partner, and Controleclube to manage them. I do not understand why it is not necessary to present the Portfolio parameter

1 answer

1


@Diovana, you’re not adding because of your method:

def acrescenta_lista_socio(self, Carteira):
    self.lista_de_socios.append((self.numero, self.bilhete))

Note that in the second line you are giving the append in self.numero and self.ticket, that is, you are not taking the data from the new wallet, this taking data from the wallet you already have.
Replace with:

def acrescenta_lista_socio(self, Carteira):
    self.lista_de_socios.append((Carteira.get_numero(), Carteira.get_bilhete()))
  • Wow, I didn’t even notice that. Thank you so much! :)

Browser other questions tagged

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