Tutoriais

Entendendo Sublinhados Simples e Duplos em Python

Ana Maria Gomes 07 jun Intermediário 5xp
Compartilhar

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.

Cursos gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Python para iniciantes: do zero ao primeiro projeto

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Python para dados: do zero à análise completa

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Analista de Dados
Curso
Grátis · 4h 11min

Python para IA: do zero ao primeiro chatbot

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

0 comentários

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov