HOWTO · Python

Equivalente a tostring() em Python

Conheça as ferramentas Python que substituem tostring(): str() para conversão, join() para strings, f-strings ou str.format() para modelos e __str__() para objetos personalizados.

Nesta página

Python não tem um método chamado tostring(); o método correspondente do Java é escrito como toString(). Use a função integrada str(value) quando precisar da representação em string de um único valor. Use join() para combinar várias strings e f-strings ou str.format() para montar uma mensagem. Essas operações produzem texto para exibição, não um formato de serialização de uso geral.

Converter um valor com str()

str() retorna uma string para números, coleções e a maioria dos outros objetos Python. Essa é a resposta direta à pergunta “Qual é o equivalente de tostring() em Python?”. Para uma coleção, o resultado é sua representação legível, incluindo os delimitadores e as representações de seus elementos.

number = 123
values = [1, 2, 3]

print(str(number))
print(str(values))

Saída:

123
[1, 2, 3]

O resultado das duas chamadas é um str. Converter um dicionário ou uma lista dessa maneira não cria JSON, CSV ou outro formato de intercâmbio. Use uma biblioteca específica do formato quando outro programa precisar ler os dados de modo confiável.

Juntar strings e valores mistos

Chame join() no separador, não na lista. Todos os itens passados a join() já devem ser strings. Esse é o limite importante que diferencia a junção da conversão geral.

words = ["Hello", "world", "from", "Python"]
sentence = " ".join(words)
mixed = "|".join(map(str, [1, "two", None]))

print(sentence)
print(mixed)

Saída:

Hello world from Python
1|two|None

Para um iterável que contenha números ou outros objetos, map(str, values) converte cada item antes da junção. Uma chamada direta como ", ".join(["one", 2]) gera um TypeError, porque join() não converte implicitamente itens que não sejam strings.

Formatar valores com f-strings

Use uma f-string quando uma mensagem contiver valores e o modelo for conhecido no local em que você escreve o código. As expressões entre chaves são avaliadas e convertidas durante a formatação. As especificações de formato podem controlar precisão, largura e outros detalhes de apresentação.

name = "Ada"
score = 3.14159
message = f"{name} scored {score:.2f}"

print(message)

Saída:

Ada scored 3.14

As f-strings foram introduzidas no Python 3.6 e estão disponíveis na série atual do Python 3.14. Elas costumam ser a opção mais clara para um modelo local e legível, mas não devem ser usadas para serializar dados destinados a outro sistema.

Usar str.format() em modelos

str.format() é útil quando um modelo é armazenado separadamente, reutilizado ou precisa oferecer suporte a código anterior às f-strings. O método converte os valores fornecidos enquanto substitui campos numerados ou nomeados.

item = "apple"
quantity = 5
message = "I have {quantity} {item}s.".format(quantity=quantity, item=item)

print(message)

Saída:

I have 5 apples.

Prefira campos nomeados quando um modelo tiver vários valores; eles tornam mais clara a relação entre cada espaço reservado e seu valor. Em código novo com um modelo em linha, uma f-string geralmente é mais curta.

Definir __str__() para objetos personalizados

Implemente __str__() quando sua classe precisar de uma representação útil e legível para pessoas. Python o chama para str(instance) e quando print() exibe a instância. O método deve retornar uma string, não um número ou outro objeto.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name} ({self.age})"

person = Person("Ada", 36)
print(str(person))

Saída:

Ada (36)

Mantenha __str__() conciso e útil para pessoas. __repr__() tem outra finalidade, voltada à depuração e aos desenvolvedores; definir um deles não substitui o outro.

Limitações e resumo dos métodos

Escolha a operação correspondente ao resultado de que você precisa:

  • Use str(value) para um único valor ou para obter uma representação legível de uma coleção.
  • Use separator.join(strings) para combinar strings e converta antes os itens com map(str, values) quando necessário.
  • Use f-strings para modelos legíveis em linha e str.format() para modelos reutilizáveis ou armazenados separadamente.
  • Implemente __str__() quando sua própria classe precisar de uma representação legível para pessoas.

Esses métodos não garantem uma representação reversível ou legível por máquina. Para JSON, use json.dumps() e trate os tipos que JSON não consegue representar. Para um formato de transmissão personalizado, defina seu esquema explicitamente em vez de depender da saída de str().

Em resumo, substitua uma chamada tostring() no estilo Java por str(value) e depois escolha join(), uma f-string, str.format() ou __str__() quando a tarefa for especificamente combinar, formatar ou personalizar texto.