1
resposta

[Dúvida] ajuda

Estou no curso de orientacao a objetos, e estou tendo um problema. quando faco a codificacao e crio por exemplo um arquivo main.py para executaro codigo, ele nao obedece as funcoes. fiz o teste e COPIEI igualzinho o codigo do professor e ainda sim o mesmo erro. O codigo nao funciona mesmo sendo identico ao do professor, fiz dois programas diferente, o mais simples nao executa e nao traz nenhuma infomacao.

(arquivo como ( main.py )

from cliente import Cliente

cliente = Cliente("Edu")
cliente.nome = "nico"


cliente.get_nome()

(arquivo como cliente.py )

class Cliente:
    def __init__(self, nome):
        self.nome = nome
        
    def get_nome(self):
        return self.nome.title()      

nao executa conforme a aula

ja nesse, ele executaate a funcao transferir, mas se chama a fucao abaixo nao da erro nenhum mas tb nao mostra nada.

class Conta:
    def __init__(self, numero, titular, saldo, limite): #funcao construtora
        print("construindo objeto...")
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite
        

    def extrato(self):
        print(f"Titular: {self.__titular}.O Seu Saldo e: {self.__saldo}")

    def deposita(self, valor):
        self.__valor = valor
        self.__saldo += valor
        print(f"{self.__titular} Deposito de R$ {self.__valor} Confrmado. Seu saldo Agora e : {self.__saldo}")

    def saca(self,valor):
        self.__valor = valor
        self.__saldo -= valor
        #print(f"Titular: {self.__titular} Voce Sacou {self.__valor}. Seu Novo Saldo e : {self.__saldo}")

    def transferir(self, valor, destino):
        self.saca(valor)
        destino.deposita(valor)
        #print(f"Voce Transferiu R$ {self.__valor} para o Titular  SR(a){destino} ")

    def get_saldo(self):
        return self.__saldo
    
    def get_titular(self):
        return self.__titular
    
    def get_limite(self):
        return self.__limite
    
    def set_limite(self, limite):
        self.__limite = limite
1 resposta

Olá Eduardo, tudo bem com você?

A diferença de comportamento apresentado no seu código para o código do instrutor, está no modo em que os códigos são executados. O professor está executando o código diretamente no Python Console (minuto 5:45), dessa forma, não é necessário o uso da função print() para exibir o retorno dos métodos. Quando executamos o arquivo um arquivo python (.py), é necessário o uso da função print() para exibir os retornos dos métodos de classe. Por exemplo:

print(cliente.get_nome())

Deixo abaixo como o código do arquivo main.py deve ficar:

from cliente import Cliente

cliente = Cliente("Edu")
cliente.nome = "nico"

print(cliente.get_nome())

Resultado

Nico

O mesmo acontece para os métodos get_ da classe Conta, é necessário adicionar a chamada dos métodos, dentro da função print() para que o retorno desses métodos sejam exibidos no terminal. Por exemplo:

conta1 = Conta(123, "Edu", 1000, 5000)
print(conta1.get_limite())

Resultado

5000

Após adicionar a função print() a chamada dos métodos, salve o arquivo main.py e execute-o novamente.

Gostaria de aproveitar a oportunidade e informar que este curso passou por atualização ganhando uma nova versão. Caso queria conhecê-la, basta acessar o seguinte link: Python: aplicando a Orientação a Objetos.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!