HOWTO · Python

Equivalente de tostring() en Python

Descubra qué herramientas de Python sustituyen a tostring(): str() para convertir, join() para cadenas, f-strings o str.format() para plantillas y __str__() para objetos propios.

En esta página

Python no tiene un método llamado tostring(); el método correspondiente de Java se escribe toString(). Use la función incorporada str(value) cuando necesite la representación como cadena de un solo valor. Use join() para combinar varias cadenas y f-strings o str.format() para construir un mensaje. Estas operaciones producen texto para mostrar, no un formato de serialización de uso general.

Convertir un valor con str()

str() devuelve una cadena para números, colecciones y la mayoría de los demás objetos de Python. Es la respuesta directa a la pregunta «¿Cuál es el equivalente de tostring() en Python?». Para una colección, el resultado es su representación legible, incluidos los delimitadores y las representaciones de sus elementos.

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

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

Salida:

123
[1, 2, 3]

El resultado de ambas llamadas es un str. Convertir un diccionario o una lista de este modo no crea JSON, CSV ni otro formato de intercambio. Use una biblioteca específica del formato cuando otro programa deba leer los datos de forma fiable.

Unir cadenas y valores mixtos

Llame a join() sobre el separador, no sobre la lista. Cada elemento que se pase a join() ya debe ser una cadena. Este es el límite útil que distingue la unión de la conversión general.

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

print(sentence)
print(mixed)

Salida:

Hello world from Python
1|two|None

Para un iterable que contenga números u otros objetos, map(str, values) convierte cada elemento antes de unirlos. Una llamada directa como ", ".join(["one", 2]) genera un TypeError, porque join() no convierte implícitamente los elementos que no son cadenas.

Formatear valores con f-strings

Use un f-string cuando un mensaje contenga valores y la plantilla sea conocida en el lugar donde escribe el código. Las expresiones entre llaves se evalúan y se convierten como parte del formato. Las especificaciones de formato permiten controlar la precisión, el ancho y otros detalles de presentación.

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

print(message)

Salida:

Ada scored 3.14

Las f-strings se incorporaron en Python 3.6 y están disponibles en la serie actual de Python 3.14. Suelen ser la opción más clara para una plantilla local y legible, pero no deben usarse para serializar datos destinados a otro sistema.

Usar str.format() para plantillas

str.format() resulta útil cuando una plantilla se almacena por separado, se reutiliza o debe admitir código anterior a las f-strings. Convierte los valores proporcionados al sustituir los campos numerados o con nombre.

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

print(message)

Salida:

I have 5 apples.

Prefiera campos con nombre cuando una plantilla tenga varios valores; facilitan ver la relación entre cada marcador y su valor. Para código nuevo con una plantilla en línea, un f-string suele ser más breve.

Definir __str__() para objetos propios

Implemente __str__() cuando su clase necesite una representación útil y legible para las personas. Python lo llama para str(instance) y cuando print() muestra la instancia. Debe devolver una cadena, no un número ni otro 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))

Salida:

Ada (36)

Mantenga __str__() conciso y útil para las personas. __repr__() tiene un propósito distinto, orientado a la depuración y a los desarrolladores; definir uno no sustituye al otro.

Limitaciones y resumen de métodos

Elija la operación que corresponda al resultado que necesita:

  • Use str(value) para un valor o para obtener una representación legible de una colección.
  • Use separator.join(strings) para combinar cadenas y convierta antes los elementos con map(str, values) cuando sea necesario.
  • Use f-strings para plantillas legibles en línea y str.format() para plantillas reutilizables o almacenadas por separado.
  • Implemente __str__() cuando su propia clase necesite una representación legible para las personas.

Estos métodos no garantizan una representación reversible ni legible por máquinas. Para JSON, use json.dumps() y gestione los tipos que JSON no puede representar. Para un formato de intercambio personalizado, defina su esquema de forma explícita en vez de depender de la salida de str().

En resumen, sustituya una llamada tostring() al estilo de Java por str(value) y después elija join(), un f-string, str.format() o __str__() cuando la tarea consista específicamente en combinar, formatear o personalizar texto.