Skip to main content

Métodos com __ | Python

  • Métodos com __ | Python

__main__ | Python

if __name__ == "__main__":
...

O que isso significa?

Essa linha é usada para verificar se o script está sendo executado diretamente ou se está sendo importado como um módulo em outro script.

  • __name__: É uma variável especial no Python que é automaticamente definida.

    • Quando o script é executado diretamente (ex.: python meu_script.py), o valor de __name__ é __main__.
    • Quando o script é importado como um módulo, o valor de __name__ será o nome do módulo (ex.: meu_modulo).
  • Propósito principal:

    • Garantir que certos blocos de código sejam executados apenas quando o script for executado diretamente, e não quando importado. Isso é útil para organização e reusabilidade.

Exemplo prático:

def funcao_exemplo():
print("Esta função pode ser usada em outros scripts!")

if __name__ == "__main__":
print("Este código será executado apenas se o script for rodado diretamente!")
funcao_exemplo()

Cenários:

  1. Executando diretamente:

    python meu_script.py

    Saída:

    Este código será executado apenas se o script for rodado diretamente!
    Esta função pode ser usada em outros scripts!
  2. Importando como módulo:

    import meu_script
    meu_script.funcao_exemplo()

    Saída:

    Esta função pode ser usada em outros scripts!

Benefícios:

  • Evitar que códigos de teste ou execuções específicas sejam rodados ao importar o módulo.
  • Tornar o script mais modular e reutilizável.

repr

A função __repr__(self) é um método especial em Python que define a representação oficial (ou “debugável”) de um objeto.

Explicando de forma simples:

Quando você faz:

print(obj)

ou

repr(obj)

o Python tenta chamar o método __repr__ desse objeto.

Exemplo:

class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade

def __repr__(self):
return f"Pessoa(nome='{self.nome}', idade={self.idade})"

Agora:

p = Pessoa("João", 30)
print(p)

Saída:

Pessoa(nome='João', idade=30)

Diferença entre __repr__ e __str__:

  • __repr__: usado para desenvolvedores, idealmente deve retornar uma string que possa ser usada para recriar o objeto.
  • __str__: usado para usuários finais, normalmente retorna algo mais legível.

Se __str__ não estiver definido, o Python usa __repr__ como substituto.

Em resumo:

  • __repr__ = “como o objeto deve aparecer no terminal, logs ou debug”
  • É útil para debugar e entender melhor os objetos quando estão sendo usados.