Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of the __str__ method in a Python class?
The __str__ method defines the "informal" or nicely printable string representation of an object. It is used by the print() function and str() to show a user-friendly description.
Click to reveal answer
beginner
What does the __repr__ method do in Python?
The __repr__ method returns an "official" string representation of an object. It is meant to be unambiguous and, if possible, match the code needed to recreate the object. Used by repr() and in the interactive interpreter.
Click to reveal answer
intermediate
If a class has both <code>__str__</code> and <code>__repr__</code> methods, which one does <code>print()</code> use?
print() uses the __str__ method if it is defined. If __str__ is missing, it falls back to __repr__.
Click to reveal answer
intermediate
Write a simple Python class Person with __str__ and __repr__ methods that show the person's name and age.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person named {self.name}, aged {self.age}"
def __repr__(self):
return f"Person(name={self.name!r}, age={self.age!r})"
Click to reveal answer
intermediate
Why is it recommended that __repr__ returns a string that could be used to recreate the object?
Because __repr__ is mainly for developers, returning a string that can recreate the object helps debugging and testing. It shows the object's details clearly and can be used with eval() to make a copy.
Click to reveal answer
Which method is called by the print() function to get an object's string representation?
A__del__
B__repr__
C__init__
D__str__
✗ Incorrect
print() uses the __str__ method if available to show a user-friendly string.
What is the main difference between __str__ and __repr__?
A__str__ is for users; __repr__ is for developers
B__repr__ is for users; __str__ is for developers
CBoth are exactly the same
D__str__ is only for numbers
✗ Incorrect
__str__ gives a readable string for users; __repr__ gives a detailed string for developers.
If a class defines only __repr__ but not __str__, what happens when you use print() on its object?
AIt prints nothing
BIt raises an error
CIt uses __repr__ output
DIt uses __init__ output
✗ Incorrect
If __str__ is missing, print() falls back to __repr__.
Which of these is a good practice for __repr__?
AReturn a string that can recreate the object
BReturn a short emoji
CReturn an empty string
DReturn a random number
✗ Incorrect
__repr__ should return a string that looks like the code to recreate the object.
What happens if neither __str__ nor __repr__ is defined in a class?
APython crashes
BPython shows a default string like <ClassName object at memory_address>
CPython prints None
DPython prints an empty line
✗ Incorrect
Python uses a default representation showing the class name and memory address.
Explain the difference between the __str__ and __repr__ methods in Python classes.
Think about who sees the output: users or developers.
You got /4 concepts.
Write a Python class with both __str__ and __repr__ methods and describe what each returns.
Use a simple example like a Person with name and age.
You got /3 concepts.
Practice
(1/5)
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
A. __init__
B. __repr__
C. __str__
D. __del__
Solution
Step 1: Understand the purpose of __str__
The __str__ method returns a readable string for users, used by print().
Step 2: Compare with __repr__
The __repr__ method returns a detailed string for developers, not usually for printing.
Final Answer:
__str__ -> Option C
Quick 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
A. def __repr__(self): self.return 'object info'
B. def repr(self): return 'object info'
C. def __repr__(self): print('object info')
D. def __repr__(self): return 'object info'
Solution
Step 1: Check method name and parameters
The method must be named __repr__ and take self as 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 D
Quick 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
A. A cute cat
Cat()
B. Cat()
A cute cat
C. A cute cat
A cute cat
D. Cat()
Cat()
Solution
Step 1: Understand print(c) calls __str__
The print(c) calls __str__, which returns 'A cute cat'.
Step 2: Understand print(repr(c)) calls __repr__
The repr(c) calls __repr__, which returns 'Cat()'.
The __repr__ method uses print() 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 A
Quick 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?
pass
hard
A. return f"Book('{self.title}')"
B. return f"Book(title='{self.title}')"
C. return f"Book(title={self.title})"
D. return f"Book({self.title})"
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}')" returns Book(title='title') which can be used to recreate the object. Others miss quotes or keyword.
Final Answer:
return f"Book(title='{self.title}')" -> Option B
Quick Check:
__repr__ returns constructor call string [OK]
Hint: __repr__ should return code to recreate object [OK]