Não tem como indicar que destino é um objeto da classe Conta para que o autocomplete funcione dentro do método transfere()?
Não tem como indicar que destino é um objeto da classe Conta para que o autocomplete funcione dentro do método transfere()?
Oii Franco, como você está?
Se você estiver utilizando o Python Console dentro do PyCharm, para o autocomplete funcionar basta apertar a tecla TAB, veja:
Mas, caso você não tenha digitado nada e queira sugestões, você pode apertar a tecla CTRL seguido da tecla espaço para que o sistema te apresente opções:
Qualquer dúvida estou por aqui, a gente vai se falando.
Abraços e bons estudos!
Na verdade, o que eu queria era dentro do método transfere() ao digitar 'destino' seguido de ponto, aparecessem todos os métodos da classe Conta. Talvez se fizer assim, funcione:
def transfere(valor, destino = Conta(0, '', 0.0, 0.0)):
assim, ao digitar "destino.", espero que apareça janela de autocomplete com os métodos de Conta.
Oii Franco, compreendi a sua necessidade. Podemos utilizar o recurso de type-hints para dizer qual tipo aquela variável espera. Por exemplo, se temos uma variável que receberá um inteiro, podemos utilizar a seguinte abordagem:
numero: int = 10
Vale ressaltar que é apenas uma dica de tipo, pois mesmo dizendo explicitamente que a variável espera receber um inteiro, podemos passar outros tipos a ela, ou seja, não há um bloqueio de tipo, apenas uma indicação de qual tipo se deve passar.
Para o caso em específico do método "transfere", poderemos fazer da seguinte maneira:
def transfere(self, valor, destino: 'Conta'):
self.saca(valor)
destino.deposita(valor)
Observe que utilizamos o recurso de type-hints para indicar que o "destino" espera receber o tipo Conta. Nesse caso em especial, é necessário que o tipo esteja entre aspas simples porque o método "transfere" se encontra dentro da própria classe "Conta", então para auto referenciá-la, utilizamos as aspas.
Abaixo, uma imagem do autocomplete para a variável destino:
Qualquer dúvida estou por aqui.
Grande abraço!
Perfeito!