Conteúdo do Curso
Programação Orientada a Objetos em Python Avançado
Programação Orientada a Objetos em Python Avançado
repr e str
Vamos explorar alguns dos métodos mágicos mais úteis.
Já estamos familiarizados com o método mágico __init__
, que consideramos anteriormente. No entanto, existem muitos outros métodos mágicos que podem ser incrivelmente úteis. Nesta seção, vamos nos concentrar em dois deles: __repr__
e __str__
.
Representação de Classe
Quando você cria uma instância da sua classe e tenta imprimi-la no console, você pode se deparar com uma representação que pode não ser muito informativa ou amigável ao usuário:
class User: def __init__(self, username): self.username = username instance = User("top.user.123") print(instance)
Para obter uma saída mais compreensível e informativa ao imprimir uma instância, você pode definir o método mágico __repr__
, que significa "representação".
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" instance = User("top.user.123") print(instance)
O código fornecido define uma classe chamada User
. A classe User
inclui um método mágico __repr__
, que retorna uma representação em string do objeto. Neste caso, o método __repr__
retorna uma string formatada que inclui o nome da classe "User" e o valor do atributo username
.
Quando a instrução print
é executada, ela chama o método __repr__
do objeto instance
para obter uma representação em string do objeto. Neste caso, o método __repr__
é sobrescrito na classe User
para fornecer uma representação personalizada.
Representação de String
O método mágico __str__
funciona de maneira semelhante ao __repr__
, mas é usado especificamente para fornecer informações e uma representação mais legível de um objeto para os usuários.
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" def __str__(self): return f"This is a user {self.username}" instance = User("top.user.123") print(instance)
A função print()
procura pelo método mágico __str__
em um objeto para obter uma representação em forma de string. Se o método __str__
não estiver definido, ela recorre ao uso do método __repr__
.
Além disso, o método mágico __str__
pode ser usado para converter explicitamente uma instância em um tipo string. Implementando o método __str__
, você pode definir como o objeto deve ser representado como uma string.
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" def __str__(self): return f"{self.username}" instance = User("top.user.123") string = str(instance) + " is the best user!" print(string)
Nota
Em resumo, os métodos mágicos
__str__
e__repr__
são utilizados para definir diferentes representações em string de objetos em Python. O método__str__
é tipicamente usado para fornecer uma saída amigável ao usuário, apresentando o objeto de uma maneira que seja fácil de entender para os usuários. Por outro lado, o método__repr__
é usado para fornecer uma saída amigável ao desenvolvedor, contendo tipicamente informações mais detalhadas sobre o objeto para depuração e uso interno.
Obrigado pelo seu feedback!