Bird
Raised Fist0
Pythonprogramming~3 mins

Why String representation methods in Python? - Purpose & Use Cases

Choose your learning style10 modes available

Start learning this pattern below

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
The Big Idea

What if your objects could talk clearly whenever you print them, without extra effort?

The Scenario

Imagine you have a list of objects, like books or movies, and you want to print them out to see their details. Without a clear way to show what each object contains, you get confusing messages like <Book object at 0x12345> instead of useful info.

The Problem

Manually writing print statements for every attribute of each object is slow and messy. It's easy to forget details or make mistakes, and the output can be inconsistent and hard to read.

The Solution

String representation methods let you define exactly how your objects turn into strings. This means whenever you print or log them, you get clear, readable, and consistent descriptions automatically.

Before vs After
Before
print(book.title + ', ' + book.author + ', ' + str(book.year))
After
print(book)  # uses __str__ method inside the Book class
What It Enables

You can easily see meaningful summaries of your objects anywhere, making debugging and displaying data simple and elegant.

Real Life Example

When building a contact list app, defining string representations for contacts lets you print each contact's name and phone number neatly without extra code every time.

Key Takeaways

Manual printing of object details is tedious and error-prone.

String representation methods automate and standardize how objects show their info.

This makes your code cleaner and your output easier to understand.

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

  1. Step 1: Understand the purpose of __str__

    The __str__ method returns a readable string for users, used by print().
  2. Step 2: Compare with __repr__

    The __repr__ method returns a detailed string for developers, not usually for printing.
  3. Final Answer:

    __str__ -> Option C
  4. 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

  1. Step 1: Check method name and parameters

    The method must be named __repr__ and take self as parameter.
  2. Step 2: Verify return statement

    __repr__ must return a string, not print or use invalid syntax.
  3. Final Answer:

    def __repr__(self): return 'object info' -> Option D
  4. 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

  1. Step 1: Understand print(c) calls __str__

    The print(c) calls __str__, which returns 'A cute cat'.
  2. Step 2: Understand print(repr(c)) calls __repr__

    The repr(c) calls __repr__, which returns 'Cat()'.
  3. Final Answer:

    A cute cat Cat() -> Option A
  4. Quick 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
A. __repr__ should return a string, not print it
B. __str__ method is missing self parameter
C. print(Dog()) should be print(Dog)
D. __repr__ method name is incorrect

Solution

  1. Step 1: Check __repr__ method body

    The __repr__ method uses print() instead of returning a string, which is incorrect.
  2. Step 2: Understand consequences

    Because __repr__ returns None, printing the object calls __str__ but repr() would fail to give a string.
  3. Final Answer:

    __repr__ should return a string, not print it -> Option A
  4. 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

  1. Step 1: Understand __str__ output

    The __str__ method returns a user-friendly string with the title.
  2. 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.
  3. 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.
  4. Final Answer:

    return f"Book(title='{self.title}')" -> Option B
  5. Quick 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__