Chapter 8. Classes and Objects
The primary focus of this chapter is to present recipes to common programming patterns related to class definitions. Topics include making objects support common Python features, usage of special methods, encapsulation techniques, inheritance, memory management, and useful design patterns.
8.1. Changing the String Representation of Instances
Problem
You want to change the output produced by printing or viewing instances to something more sensible.
Solution
To change the string representation of an instance, define the
__str__()
and __repr__()
methods. For example:
class
Pair
:
def
__init__
(
self
,
x
,
y
):
self
.
x
=
x
self
.
y
=
y
def
__repr__
(
self
):
return
'Pair({0.x!r}, {0.y!r})'
.
format
(
self
)
def
__str__
(
self
):
return
'({0.x!s}, {0.y!s})'
.
format
(
self
)
The __repr__()
method returns the code representation
of an instance, and is usually the text you would type
to re-create the instance. The built-in repr()
function returns
this text, as does the interactive interpreter when inspecting values.
The __str__()
method
converts the instance to a string, and is the output produced by the
str()
and print()
functions. For example:
>>>
p
=
Pair
(
3
,
4
)
>>>
p
Pair(3, 4) # __repr__() output
>>>
(
p
)
(3, 4) # __str__() output
>>>
The implementation of this recipe also shows how different string
representations may be used during formatting. Specifically, the
special !r
formatting code indicates that the output of
__repr__()
should be used instead of __str__()
, the default. ...
Get Python Cookbook, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.