Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Private - Atributos

Porque o professor não deixou os métodos privados aqui? colocando __ Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá Marconi, como você está?

Peço desculpas pela demora em obter um retorno.

Como tanto o método saca, quanto o método transfere, não serão utilizados diretamente fora da classe, o instrutor poderia sim ter colocado-os como privado.

Mas, o encapsulamento tanto de métodos, quanto de atributos no Python, é um assunto que desperta diversas opiniões e isso, por não ser algo obrigatório da linguagem - embora, seja extremamente importante definir a visibilidade de métodos e atributos quando se trabalha com orientação a objetos.

Vale ressaltar que ao utilizar o duplo underscore em métodos, as classes filhas, não herdarão esses métodos, como mostro abaixo:

class Animal:

  def __init__(self, tipo):
    self.tipo = tipo

  def __tipo_comunicacao(self, som):
    return som

  def comida_preferida(self, comida):
    return f"A comida preferida é {comida}"


class Gato(Animal):
  pass

garfield = Gato("Siamês")
garfield.comida_preferida("Ração")
garfield.__tipo_comunicacao("miau miau")

Erro gerado:

AttributeError: 'Gato' object has no attribute '__tipo_comunicacao'

Também, é importante que não será possível invocar métodos que possuam duplo underscore fora da classe (através de objetos) e isso ocorre devido ao name mangling, que se trata de uma mudança no nome do método ou atributo para dificultar a leitura direta. Mas, reforço que apesar de dificultar, seu acesso não é impossível.

Para entender mais sobre atributos, métodos privados e até mesmo sobre name mangling, recomendo a leitura dos seguintes artigos - que estão em inglês, mas ao utilizar o recurso de tradução do próprio navegador, é possível compreender:

Em caso de dúvidas, encontro-me à disposição.

Abraços e bons estudos.

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

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