Skip to content

Understanding Python __str__ Method


How and When to Use .str() in Python

In this tutorial, we will explore a Pythonic way to convert Python objects into strings using the .__str__() method. We will explain what the method does and provide examples of how and when to use it in a Python class.

Introduction to .str()

The .__str__() method is a dunder method, also known as a magic method or a special method, that allows Python classes to define their own string representation. When this method is called on an object, it should return a string that represents the object in a human-readable format.

By convention, if we add a .str__() method to a class, it will be called by functions that deal with text representations, such as the print() function or a format string. This method gives us control over how our object is represented as a string.

Example: Creating a Car Class

Let’s start with a simple example of a Car class and add a .str__() method to it. We will create an instance of the class, print it, and observe the difference in the output.

class Car:
def __init__(self, color, mileage):
self.color = color
self.mileage = mileage
def __str__(self):
return 'a {} car'.format(self.color)

In this example, the .str__() method is defined to return a string that includes the color of the car. When we print an instance of the Car class, it will call this method and display the specified string representation.

my_car = Car('red', 10000)
print(my_car) # Output: a red car

As we can see, the output now shows the desired string representation of the car.

Using the str() Function

To convert an object to a string, we can use the built-in str() function. Internally, str() calls the .str__() method of the object, ensuring that we get the correct string representation.

my_car_str = str(my_car)
print(my_car_str) # Output: a red car

In this example, we explicitly call the str() function on my_car, and it returns the same string representation that we defined in the .str__() method.

Comparing .str() and .repr()

There is another dunder method called .repr__() that is similar to .str__(). Both methods allow us to represent an object as a string, but they differ in their intended use.

The .str__() method is meant to provide a human-readable representation of the object. It should be used for display purposes and should focus on presenting the important information in a user-friendly format.

On the other hand, the .repr__() method is meant to provide a unambiguous representation of the object. It should include all the necessary information to reconstruct the object if needed. By convention, the output of .repr__() should be a valid Python expression.


In this tutorial, we learned about the .str__() method, which allows Python classes to define their own string representation. We saw how to implement and use the method in a simple example with a Car class. We also discussed the difference between .str__() and .repr__().

By leveraging the .str__() method, we can control how our objects are displayed as strings, making our code more readable and user-friendly. Understanding the nuances of these dunder methods helps us become better Python programmers and enables us to write clean and efficient code.