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).
- Quando o script é executado diretamente (ex.:
-
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:
-
Executando diretamente:
python meu_script.pySaída:
Este código será executado apenas se o script for rodado diretamente!
Esta função pode ser usada em outros scripts! -
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.