Section 17.8 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.
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.
__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
Now, you ask, don't we already have an
str type converter that can turn our object into a string? Yes we do!
But, 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.