How to Convert an Object to a String in Python

avatar
Borislav Hadzhiev

Last updated: Apr 9, 2024
4 min

banner

# Table of Contents

  1. Convert an Object to a String in Python
  2. Convert a Class object to a String in Python
  3. Converting a Class instance to a JSON string
  4. Convert a Class object to a String using __repr__()

# Convert an Object to a String in Python

Use the str() class to convert an object to a string.

The str() class returns the string version of the given object.

main.py
my_int = 42 # โœ… Convert an object to a string result = str(my_int) print(result) # ๐Ÿ‘‰๏ธ '42' print(type(result)) # ๐Ÿ‘‰๏ธ <class 'str'> print(isinstance(result, str)) # ๐Ÿ‘‰๏ธ True

convert object to string

The code for this article is available on GitHub

The first example uses the str() class to convert an object to a string.

The str() class takes an object and returns the string version of the object.

main.py
my_obj = 3.14 result = str(my_obj) print(result) # ๐Ÿ‘‰๏ธ '3.14' print(type(result)) # ๐Ÿ‘‰๏ธ <class 'str'>

If you need to convert a class object to a string, implement the __str__() method.

# Convert a Class object to a String in Python

Use the __str__() method to convert an object to a string.

The __str__() method is called by str(object) and the built-in format() and print() functions and returns the informal string representation of the object.

main.py
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return f'Name: {self.name}' bobby = Employee('bobbyhadz', 100) print(bobby) # ๐Ÿ‘‰๏ธ Name: bobbyhadz
The code for this article is available on GitHub

We defined the __str__() method on the class to convert it to a string.

The __str__ method is called by str(object) and the built-in format() and print() functions and returns the informal string representation of the object.

The print() function returns the output of the class's __str__() method.

# Make sure to return a String from the __str__() method

Make sure to return a string from the __str__() method, otherwise a TypeError is raised.

For example, if we want to return the employee's salary from the __str__() method, we have to use the str() class to convert the value to a string.

main.py
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return str(self.salary) bobby = Employee('bobbyhadz', 100) print(bobby) # ๐Ÿ‘‰๏ธ 100

make sure to return string from str method

The code for this article is available on GitHub

The __str__() method is called if you use the object in a formatted string literal or with the str.format() method.

main.py
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return str(self.salary) bobby = Employee('bobbyhadz', 100) result = f'Current salary: {bobby}' print(result) # ๐Ÿ‘‰๏ธ Current salary: 100

The __str__() method should return a string that is a human-readable representation of the object.

# Converting a Class instance to a JSON string

If you need to convert a class instance to a JSON string, use the __dict__ attribute on the instance.

main.py
import json class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return str(self.salary) bobby = Employee('bobbyhadz', 100) json_str = json.dumps(bobby.__dict__) print(json_str) # ๐Ÿ‘‰๏ธ '{"name": "bobbyhadz", "salary": 100}'

convert class instance to json string

The code for this article is available on GitHub

We used the __dict__ attribute to get a dictionary of the object's attributes and values and converted the dictionary to JSON.

The json.dumps() method converts a Python object to a JSON formatted string.

# Convert a Class object to a String using __repr__()

There is also a __repr__() method that can be used in a similar way to the __str__() method.

main.py
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __repr__(self): return self.name bobby = Employee('bobbyhadz', 100) print(bobby) # ๐Ÿ‘‰๏ธ 'bobbyhadz'
The code for this article is available on GitHub

The __repr__ method is called by the repr() function and is usually used to get a string that can be used to rebuild the object using the eval() function.

If the class doesn't have the __str__() method defined, but has __repr__() defined, the output of __repr__() is used instead.

# The difference between __str__() and __repr__()

A good way to illustrate the difference between __str__() and __repr__() is to use the datetime.now() method.

main.py
import datetime # ๐Ÿ‘‡๏ธ using __str__() print(datetime.datetime.now()) # ๐Ÿ‘‰๏ธ 2022-09-08 14:29:05.719749 # ๐Ÿ‘‡๏ธ using __repr__() # ๐Ÿ‘‰๏ธ datetime.datetime(2022, 9, 8, 14, 29, 5, 719769) print(repr(datetime.datetime.now())) result = eval('datetime.datetime(2023, 2, 21, 13, 51, 26, 827523)') print(result) # ๐Ÿ‘‰๏ธ 2023-02-21 13:51:26.827523
The code for this article is available on GitHub

When we used the print() function, the __str__() method in the datetime class got called and returned a human-readable representation of the date and time.

When we used the repr() function, the __repr__() method of the class got called and returned a string that can be used to recreate the same state of the object.

We passed the string to the eval() function and created a datetime object with the same state.

Note that implementing the __repr__() method in this way is not always necessary or possible.

Having the __str__() method return a human-readable string is sufficient most of the time.

# Additional Resources

You can learn more about the related topics by checking out the following tutorials:

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.

Copyright ยฉ 2024 Borislav Hadzhiev