NameError: name 'setSaldo' is not defined

0

I'm learning POO in python and am having a problem. When I try to use the getters and setters I can not.

#Método Construtor
def __init__(self):
    self.saldo = 0
    self.status = False

#Métodos Especiais
def getSaldo(self):
    return self.saldo
def setDono(self, d):
    self.dono = d

    #Demais Métodos
def abrirConta(self):
    if self.status == False:
        a = input('Quem é o titular da conta? ')
        setDono(a)
        self.tipo = input('Qual é o tipo da conta? ')
        self.status = True
        if self.tipo == 'CC':
            self.saldo = 50
            print('Parabéns, sua conta corrente está aberta. Você já tem 50 reais de saldo.')
        elif self.tipo == 'CP':
            self.saldo = 150
            print('Parabéns, sua conta poupança está aberta. Você já tem 150 reais de saldo.')

When I call the setter setDono in the same class document it gives me an error saying that setDono is not set. If I call it in another document, as in an instantiated object it works, however the getters return what seems to me to be the location in memory that the data is allocated, rather than what it contains

    
asked by anonymous 16.10.2017 / 02:54

1 answer

2

To call the method / function setDono() you need to specify that you are calling the method of the class itself, thereby making self.setDono() . Also, I recommend that when creating attributes in the constructor, enter a underscore at the beginning of the attribute name indicating that it is a private attribute of the class (it's a convention adopted) just like I did.

class Conta:

    def __init__(self):
        self._saldo = 0
        self._status = False
        self._dono = ""

    #Métodos Especiais
    def getSaldo(self):
        return self._saldo
    def setDono(self, d):
        self._dono = d

        #Demais Métodos
    def abrirConta(self):
        if self._status == False:
            a = input('Quem é o titular da conta? ')
            self.setDono(a)
            self.tipo = input('Qual é o tipo da conta? ')
            self._status = True
            if self.tipo == 'CC':
                self._saldo = 50
                print('Parabéns, sua conta corrente está aberta. Você já tem 50 reais de saldo.')
            elif self.tipo == 'CP':
                self._saldo = 150
                print('Parabéns, sua conta poupança está aberta. Você já tem 150 reais de saldo.')
    
16.10.2017 / 03:31