Bird
Raised Fist0
Pythonprogramming~10 mins

String representation methods in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the string representation of the object using the __str__ method.

Python
class Person:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return f"Person: {self.[1]"

p = Person("Alice")
print(str(p))
Drag options to blanks, or click blank then click option'
Aself
Bage
Cname
Drepr
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'age' instead of 'name' which does not exist.
Using 'repr' which is a different method.
Using 'self' directly inside the f-string.
2fill in blank
medium

Complete the code to define the __repr__ method that returns a string with the class name and the name attribute.

Python
class Person:
    def __init__(self, name):
        self.name = name
    def __repr__(self):
        return f"Person(name=[1])"

p = Person("Bob")
print(repr(p))
Drag options to blanks, or click blank then click option'
Aself.name
Bname
Cself
Drepr
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'name' without 'self.' which causes a NameError.
Using 'repr' which is a method, not an attribute.
Using 'self' directly which is not a string.
3fill in blank
hard

Fix the error in the __str__ method to correctly return the name attribute as a string.

Python
class Animal:
    def __init__(self, species):
        self.species = species
    def __str__(self):
        return self.[1]

cat = Animal("Cat")
print(str(cat))
Drag options to blanks, or click blank then click option'
Aspecies()
Bself.species()
Cstr(species)
Dspecies
Attempts:
3 left
💡 Hint
Common Mistakes
Calling the attribute like a function with parentheses.
Trying to convert the attribute with str() unnecessarily.
Using 'self.species()' which causes a TypeError.
4fill in blank
hard

Fill both blanks to create a __repr__ method that returns a string with the class name and the species attribute in quotes.

Python
class Animal:
    def __init__(self, species):
        self.species = species
    def __repr__(self):
        return f"Animal('[1]')"

bird = Animal("Bird")
print(repr(bird))
Drag options to blanks, or click blank then click option'
Aself.species
Bspecies
Cself.species.upper()
Drepr(self.species)
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'species' without 'self.' which causes an error.
Using 'self.species.upper()' which changes the string.
Using 'repr(self.species)' which adds extra quotes.
5fill in blank
hard

Fill all three blanks to create a class with __str__ and __repr__ methods that show the name and age attributes properly.

Python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __str__(self):
        return f"Name: [1], Age: [2]"
    def __repr__(self):
        return f"Person(name=[3], age={{self.age}})"

p = Person("Eve", 30)
print(str(p))
print(repr(p))
Drag options to blanks, or click blank then click option'
Aself.name
Bself.age
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'name' or 'age' without 'self.' which causes errors.
Mixing up the order of attributes in the f-string.
Using variable names that are not defined.

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__