Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
repr e str | Métodos Mágicos
Programação Orientada a Objetos em Python Avançado
course content

Conteúdo do Curso

Programação Orientada a Objetos em Python Avançado

Programação Orientada a Objetos em Python Avançado

1. Conceitos de POO
2. Herança
3. Encapsulamento
4. Polimorfismo e Abstração
5. Métodos Mágicos

book
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:

1234567
class User: def __init__(self, username): self.username = username instance = User("top.user.123") print(instance)
copy

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".

12345678910
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" instance = User("top.user.123") print(instance)
copy

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.

12345678910111213
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)
copy

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.

1234567891011121314
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)
copy

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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 2
We're sorry to hear that something went wrong. What happened?
some-alt