Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Método obter_curtidas

Ao invés de colocar return, coloquei print no método obter_curtidas e funciona normal, há possíveis problemas decorrentes disso? Ou é mais no sentido de criar um código mais semântico e de boas práticas?

def obter_curtidas(self):
        print self.__curtidas
def obter_curtidas(self):
        return self.__curtidas
4 respostas

André,

Ao realizar essa alteração o código não esta mais retornando o valor da variável self.__curtidas para quem realizou a chamada, com isso poderia ocorrer um exceção no futuro dependente da implementação, adicione o código abaixo e tente executar.

result=perfil.obter_curtidas()
print('valor da variável no momento eh: {}'.format(result) )

Obs.: No exercício 05, será impresso o valor 2 devido a IDE utilizada, caso esse mesmo código fosse executado no pycharm não seria apresentado nenhum valor, pois não ocorre a chamada da função print. Isso são coisas que você vai conhecendo conforme estuda e aprende sobre Python.

Não entendi a sua explicação, este código(abaixo) funciona normalmente com o print na função obter_curtidas

# -*- coding: utf-8 -*-
class Perfil(object):
    'Classe para moldar perfis de usuários'
    def __init__(self,nome,telefone,empresa):
        self.nome = nome
        self.telefone = telefone
        self.empresa = empresa
        self.__curtidas = 0

    def imprimir(self):
        print 'Nome: %s, Telefone: %s, Empresa: %s' %(self.nome, self.telefone, self.empresa)

    def curtir(self):
        self.__curtidas+=1

    def obter_curtidas(self):
        print self.__curtidas
solução!

André,

Execute por favor execute o código abaixo, e veja que o resultado impresso será "Total de curtidas ate o momento: None", isso ocorre porque o método "obter_curtidas" não está retornando um valor, apenas realiza uma ação.

Ao utilizarmos "return" dentro de uma função, queremos o valor definido retorno para ser utilizado em outro momento do código, como no exemplo abaixo.

perfil = Perfil('Flávio Almeida', 'não informado', 'Caelum')
perfil.curtir()
perfil.curtir()
curtidas = perfil.obter_curtidas()

print('Total de curtidas ate o momento: {}'.format(curtidas))

Bem talvez fique a duvida então porque na execução onde o método "obter_curtidas" que utilizava "return" o valor foi apresentado, bem isso ocorre pois não existia nenhuma outra instrução após "perfil.obter_curtidas()", com isso a IDE entende que não tem mais nada para ser executado naquele momento e explode o resultado da ultima chamada no terminal.

Agora entendi, obrigado Cleiton.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software