Tamanho de fonte
Alto contraste
Altura de linha

Entendendo Sublinhados Simples e Duplos em Python

Avatar de Ana Maria Gomes Ana Maria Gomes
3 minutos de leitura 5 meses atrás

Python é uma linguagem que valoriza a legibilidade e a simplicidade, e parte disso envolve certas convenções em torno do uso de sublinhados em nomes de objetos. Essas convenções sinalizam aos desenvolvedores como certos atributos e métodos devem ser utilizados.

Sublinhado Simples: Uma Dica para Uso Interno

Quando você vê um único sublinhado antes de um nome em Python, como _variavel, é um sinal de que isso é um indicador “fraco” de uso interno. Isso significa que o atributo ou método é destinado ao uso dentro do módulo ou classe, e não para ser acessado diretamente de fora. Não é uma regra estrita imposta pelo Python, mas mais uma diretriz para os desenvolvedores.

Por exemplo, se você tem uma classe com um método chamado _metodo_interno, está sugerindo que este método é destinado a ser usado pela própria classe e não de fora do seu escopo.

class MinhaClasse:
    def _metodo_interno(self):
        pass

No contexto de módulos, usar um único sublinhado significa que, ao importar um módulo usando from modulo import *, nomes com um sublinhado inicial não serão importados, a menos que o módulo defina uma lista __all__ que os inclua explicitamente.

Duplo Sublinhado: Alteração de Nome para Privacidade

Duplos sublinhados antes de um nome, como __variavel, introduzem um recurso conhecido como alteração de nome (name mangling). É onde o Python internamente altera o nome da variável para incluir o nome da classe. Isso é feito para evitar conflitos de nomes, especialmente ao lidar com herança onde uma classe base e uma subclasse podem ter atributos ou métodos com o mesmo nome.

Aqui está um exemplo de como a alteração de nome funciona:

class MinhaClasse:
    def __init__(self):
        self.__variavel_privada = "Eu sou privada!"

instancia = MinhaClasse()
# Acessando o nome alterado
print(instancia._MinhaClasse__variavel_privada)  # Saída: Eu sou privada!

Tentar acessar __variavel_privada diretamente resultará em um AttributeError porque ela foi alterada para _MinhaClasse__variavel_privada.

Duplos Sublinhados no Início e no Fim: Métodos Especiais

Nomes que começam e terminam com duplos sublinhados, como __init__ ou __str__, são reservados para uso especial na linguagem. Esses métodos “mágicos” têm propósitos específicos e são usados pelo Python de maneiras particulares. Por exemplo, __init__ é chamado quando um objeto é criado, e __str__ é chamado pela função embutida str() e pela instrução print para calcular a representação em string “informal” de um objeto.

Aqui está um exemplo de uma classe usando um método especial:

class MinhaClasse:
    def __init__(self, valor):
        self.valor = valor

    def __str__(self):
        return f"MinhaClasse com valor: {self.valor}"

instancia = MinhaClasse(10)
print(instancia)  # Saída: MinhaClasse com valor: 10

Resumo

Em resumo, um único sublinhado antes do nome de um objeto em Python é uma dica para uso interno, sugerindo que o atributo ou método é destinado ao uso dentro do módulo ou classe. Um duplo sublinhado inicia a alteração de nome, que é a maneira do Python de criar variáveis privadas para evitar conflitos de nomes em herança. Finalmente, duplos sublinhados no início e no fim de um nome são reservados para métodos especiais que o Python usa de maneiras específicas. Entender essas convenções pode ajudá-lo a escrever um código mais “Pythonico” e entender as intenções por trás de certos padrões de nomenclatura.

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov