String representation methods help show objects as readable text. This makes it easier to understand what an object contains when you print it or look at it.
String representation methods in Python
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Python
class ClassName: def __str__(self): return 'string to show when printed' def __repr__(self): return 'string to show in debug or console'
__str__ is for a friendly, readable string.
__repr__ is for an official string, often used for debugging.
Examples
Python
class Person: def __str__(self): return 'Person named Alice' p = Person() print(p)
Python
class Person: def __repr__(self): return 'Person(name="Alice")' p = Person() print(repr(p))
Python
class Person: def __str__(self): return 'Alice' def __repr__(self): return 'Person(name="Alice")' p = Person() print(p) # Uses __str__ print(repr(p)) # Uses __repr__
Sample Program
This program shows how __str__ and __repr__ give different string views of the same object.
Python
class Book: def __init__(self, title, author): self.title = title self.author = author def __str__(self): return f'"{self.title}" by {self.author}' def __repr__(self): return f'Book(title={self.title!r}, author={self.author!r})' book = Book('1984', 'George Orwell') print(book) # Calls __str__ print(repr(book)) # Calls __repr__
Important Notes
If __str__ is not defined, Python uses __repr__ as a fallback.
Use !r inside f-strings to get the repr() of a value.
Good string representations make your code easier to read and debug.
Summary
__str__ gives a nice, readable string for users.
__repr__ gives a detailed string for developers and debugging.
Defining these methods helps show objects clearly when printed or inspected.
Practice
1. Which method in Python is used to define the informal string representation of an object, typically for end users, and is called by the
print() function?easy
Solution
Step 1: Understand the purpose of __str__
The__str__method returns a readable string for users, used byprint().Step 2: Compare with __repr__
The__repr__method returns a detailed string for developers, not usually for printing.Final Answer:
__str__ -> Option CQuick Check:
Informal string for print() = __str__ [OK]
Hint: Use __str__ for user-friendly print output [OK]
Common Mistakes:
- Confusing __repr__ with __str__
- Thinking __init__ controls string output
- Assuming __del__ affects printing
2. Which of the following is the correct syntax to define the
__repr__ method inside a Python class?easy
Solution
Step 1: Check method name and parameters
The method must be named__repr__and takeselfas parameter.Step 2: Verify return statement
__repr__must return a string, not print or use invalid syntax.Final Answer:
def __repr__(self): return 'object info' -> Option DQuick Check:
Correct __repr__ syntax returns string [OK]
Hint: __repr__ must return a string, not print it [OK]
Common Mistakes:
- Omitting underscores in __repr__
- Using print instead of return
- Wrong method name without underscores
3. What is the output of this code?
class Cat:
def __repr__(self):
return 'Cat()'
def __str__(self):
return 'A cute cat'
c = Cat()
print(c)
print(repr(c))medium
Solution
Step 1: Understand print(c) calls __str__
Theprint(c)calls__str__, which returns 'A cute cat'.Step 2: Understand print(repr(c)) calls __repr__
Therepr(c)calls__repr__, which returns 'Cat()'.Final Answer:
A cute cat Cat() -> Option AQuick Check:
print() = __str__, repr() = __repr__ [OK]
Hint: print() uses __str__, repr() uses __repr__ [OK]
Common Mistakes:
- Mixing __str__ and __repr__ outputs
- Assuming print calls __repr__
- Confusing repr() with str()
4. Identify the error in this class definition related to string representation methods:
class Dog:
def __str__(self):
return 'Dog'
def __repr__(self):
print('Dog object')
print(Dog())medium
Solution
Step 1: Check __repr__ method body
The__repr__method usesprint()instead of returning a string, which is incorrect.Step 2: Understand consequences
Because__repr__returns None, printing the object calls__str__but repr() would fail to give a string.Final Answer:
__repr__ should return a string, not print it -> Option AQuick Check:
__repr__ must return string, not print [OK]
Hint: Always return string in __repr__, never print [OK]
Common Mistakes:
- Using print instead of return in __repr__
- Forgetting self parameter in methods
- Confusing print(Dog()) with print(Dog)
5. You want to create a class
Book where print(book) shows the title nicely, but repr(book) shows a string that can recreate the object. Which implementation correctly achieves this?class Book:
def __init__(self, title):
self.title = title
def __str__(self):
return f"Book titled '{self.title}'"
def __repr__(self):
# Which line below is correct?
passhard
Solution
Step 1: Understand __str__ output
The__str__method returns a user-friendly string with the title.Step 2: Create __repr__ that recreates object
The__repr__should return a string that looks like the constructor call with a keyword argument and quotes around the title.Step 3: Check options for correct syntax
return f"Book(title='{self.title}')" returnsBook(title='title')which can be used to recreate the object. Others miss quotes or keyword.Final Answer:
return f"Book(title='{self.title}')" -> Option BQuick Check:
__repr__ returns constructor call string [OK]
Hint: __repr__ should return code to recreate object [OK]
Common Mistakes:
- Missing quotes around string in __repr__
- Not using keyword argument in __repr__
- Returning informal string in __repr__
