11.6. Converting an Object to a String¶
When we’re working with classes and objects, it is often necessary to print an object (that is to print the state of an object). Consider the example below.
The print
function shown above produces a string representation of
the Point p
. The default functionality provided by Python tells
you that p
is an object of type Point
. However, it does not
tell you anything about the specific state of the point.
We can improve on this representation if we include a special method
call __str__
. Notice that this method uses the same naming
convention as the constructor, that is two underscores before and
after the name. It is common that Python uses this naming technique
for special methods.
The __str__
method is responsible for returning a string
representation as defined by the class creator. In other words, you
as the programmer, get to choose what a Point
should look like
when it gets printed. In this case, we have decided that the string
representation will include the values of x and y as well as some
identifying text. It is required that the __str__
method create
and return a string.
When we run the program above you can see that the print
function
now shows the string that we chose.
As we saw earlier, these automatic mechanisms do not do exactly what
we want. Python provides many default implementations for methods
that we as programmers will probably want to change. When a
programmer changes the meaning of a special method we say that we
override the method. Note also that the str
type converter
function uses whatever __str__
method we provide.