1
resposta

[Bug] Mensagem do @property aparecendo antes de ser chamada

Estou tendo um pequeno(talvez) problema aqui no console do python. Estou executo o arquivo cliente e logo após criando um cliente.

quando eu estou escrevendo "cliente." , logo após digitar o ponto, o console imprime ("Chamando @property nome()"), como mostra a print(1).

class Cliente:

    def __init__(self, nome):
        self.__nome = nome

    @property
    def nome(self):
        print("Chamando @property nome()")
        return self.__nome.title()

    @nome.setter
    def nome(self, nome):
        print("Chamando setter nome()")
        self.__nome = nome

Console

>>>from cliente import Cliente
>>>cliente = Cliente("Luiz")

print(1)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Luiz, tudo bem com você?

O comportamento apresentado é um bug presente no Python Console do Pycharm, onde ao apresentar o autocomplete realiza a chamada do conteúdo presente em um método decorado com o @property. Vale ressaltar que, o conteúdo presente na cláusula return não é apresentado, sendo apresentado apenas quando ocorre a execução do código. Esse comportamento não afeta o desenvolvimento e execução das próximas atividades propostas nas aulas.

Como alternativa para os testes do código, podemos fazer o uso do terminal integrado no Pycharm, neste terminal o comportamento descrito acima não é apresentado. Para isso, basta seguir os passos abaixo.

  • Abra o seu projeto no Pycharm.

  • Abra o terminal integrado do Pycharm. Clicando no botão Terminal na parte inferior da tela.

  • Inicie o Python no modo interativo, assim será possível realizar a importação da classe. Execute o comando abaixo no terminal aperto na pasta do projeto.

      python -i
  • Será aberto o console Python no terminal. Basta realizar a importação e criação do objeto da classe como apresentado na aula. Lembrando que esse console não possui a opção de autocomplete.

      from cliente import Cliente                                       
      cliente = Cliente('Luiz')
      cliente.nome
  • Para fechar o terminal Python, basta executar o comando abaixo.

      quit()

    Início da transcrição. GIF contendo a execução do passo a passo descrito acima. O usuário executa os passos na IDE Pycharm. Final da transcrição.

Espero ter ajudado, fico à disposição em caso de dúvidas.

Abraços e bons estudos.

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