str()
e repr()
são usados para obter uma representação de string do objeto.
Exemplo de str():
s = 'Olá, Acervo Lima' print(str(s)) print(str(2.0/11.0))
Saída:
Olá, Acervo Lima 0.181818181818
Exemplo de repr():
s = 'Olá, Acervo Lima' print(repr(s)) print(repr(2.0/11.0))
Saída:
'Olá, Acervo Lima' 0.18181818181818182
A partir da saída acima, podemos ver se imprimimos string usando a função repr()
, em seguida, ela imprime com um par de aspas e, se calcularmos um valor, obtemos um valor mais preciso do que a função str()
.
A seguir estão as diferenças:
str()
é usado para criar saída para o usuário final, enquanto repr() é usado principalmente para depuração e desenvolvimento. o objetivo derepr
é ser inequívoco e str’s deve ser legível. Por exemplo, se suspeitarmos que um float tem um pequeno erro de arredondamento,repr
irá nos mostrar, enquantostr
pode não.repr()
calcula a representação de string "oficial" de um objeto (uma representação que tem todas as informações sobre o objeto) estr()
é usado para calcular a representação de string "informal" de um objeto (uma representação que é útil para imprimir o objeto).- A função
print
e a função internastr()
usam__str__
para exibir a representação de string do objeto, enquanto a função internarepr()
usa__repr__
para exibir o objeto.
Vamos entender isso por um exemplo:
import datetime today = datetime.datetime.now() # Imprime formato legível para objeto de data e hora print(str(today)) # imprime o formato oficial do objeto data-hora print(repr(today))
Resultado:
2020-12-05 19:05:20.173734 datetime.datetime(2020, 12, 5, 19, 5, 20, 173734)
str()
exibe a data de hoje de uma forma que o usuário pode entender a data e hora.
repr()
imprime a representação “oficial” de um objeto de data e hora (significa que usando a representação de string “oficial” podemos reconstruir o objeto).
Como fazê-los funcionar para nossas próprias classes definidas?
Uma classe definida pelo usuário também deve ter um __repr__
se precisarmos de informações detalhadas para depuração. E se acharmos que seria útil ter uma versão string para os usuários, criamos uma função __str__
.
# Programa Python para demonstrar a escrita # de __repr__ e __str__ para classes definidas pelo usuário # Uma classe definida pelo usuário para representar números complexos class Complex: # construtor def __init__(self, real, imag): self.real = real self.imag = imag # Para chamar repr (). Imprime informações do objeto def __repr__(self): return 'Racional(%s, %s)' % (self.real, self.imag) # Para chamar str(). Imprime forma legível def __str__(self): return '%s + i%s' % (self.real, self.imag) t = Complex(10, 20) print(str(t)) print(repr(t))
Resultado:
10 + i20 Racional(10, 20)
Artigo escrito por Arpit Agarwal e melhorado por rajivsarkar67 e traduzido por Acervo Lima de str() vs repr() in Python
0 comentários:
Postar um comentário