Bird
Raised Fist0
Pythonprogramming~5 mins

String representation methods in Python - Cheat Sheet & Quick Revision

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
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__
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
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
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
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
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

      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__