Bird
Raised Fist0
Pythonprogramming~5 mins

Purpose of magic 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 are magic methods in Python?
Magic methods are special methods in Python that start and end with double underscores, like <code>__init__</code> or <code>__str__</code>. They let you define how objects behave with built-in operations.
Click to reveal answer
beginner
Why do we use magic methods?
We use magic methods to customize how our objects respond to common actions like creating, printing, adding, or comparing. This makes our objects work naturally with Python syntax.
Click to reveal answer
beginner
Give an example of a magic method and its purpose.
The __init__ method runs when you create a new object. It sets up the object’s initial state, like giving it starting values.
Click to reveal answer
intermediate
How do magic methods improve code readability?
Magic methods let you use simple syntax like <code>print(obj)</code> or <code>obj1 + obj2</code> instead of calling special functions. This makes code easier to read and write.
Click to reveal answer
intermediate
What happens if you don’t define magic methods in your class?
If you don’t define magic methods, your objects use default behaviors. For example, printing an object shows its memory address instead of a friendly message.
Click to reveal answer
Which magic method is called when you create a new object?
A__init__
B__str__
C__add__
D__repr__
What does the __str__ magic method do?
ADefines how an object is printed as a string
BAdds two objects together
CInitializes an object
DDeletes an object
Why are magic methods useful?
AThey make code run faster
BThey let objects behave like built-in types
CThey prevent errors automatically
DThey store data in files
What happens if __add__ is not defined for a class?
AObjects will be deleted
BObjects will add automatically
CObjects will be printed as strings
DUsing + on objects will cause an error
Which magic method controls the behavior of the print() function on an object?
A__del__
B__init__
C__str__
D__call__
Explain in your own words why magic methods are important in Python classes.
Think about how objects act when you print them or add them.
You got /3 concepts.
    List three common magic methods and describe what each one does.
    Focus on creation, printing, and arithmetic.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of magic methods in Python?
      easy
      A. To create graphical user interfaces
      B. To customize how objects behave with built-in Python features
      C. To manage file input and output
      D. To write comments in the code

      Solution

      1. Step 1: Understand what magic methods are

        Magic methods are special functions with double underscores that let you change how objects act.
      2. Step 2: Identify their main use

        They allow objects to work with Python features like printing, adding, or getting length.
      3. Final Answer:

        To customize how objects behave with built-in Python features -> Option B
      4. Quick Check:

        Magic methods = customize object behavior [OK]
      Hint: Magic methods start and end with double underscores [OK]
      Common Mistakes:
      • Thinking magic methods create GUIs
      • Confusing magic methods with file handling
      • Believing magic methods are for comments
      2. Which of the following is the correct syntax for a magic method that initializes an object?
      easy
      A. def __init__(self):
      B. def __initialize__(self):
      C. def init__(self):
      D. def _init_(self):

      Solution

      1. Step 1: Recall the correct magic method name for initialization

        The magic method to initialize an object is spelled with double underscores before and after 'init'.
      2. Step 2: Check each option's syntax

        Only 'def __init__(self):' has the correct double underscores and spelling.
      3. Final Answer:

        def __init__(self): -> Option A
      4. Quick Check:

        Initialization method = __init__ [OK]
      Hint: Magic methods always have double underscores on both sides [OK]
      Common Mistakes:
      • Using single underscores instead of double
      • Misspelling the method name
      • Adding extra words like 'initialize'
      3. What will be the output of this code?
      class Number:
          def __init__(self, value):
              self.value = value
          def __add__(self, other):
              return self.value + other.value
      
      num1 = Number(5)
      num2 = Number(10)
      print(num1 + num2)
      medium
      A. 510
      B. TypeError
      C. 15
      D. None

      Solution

      1. Step 1: Understand the __add__ magic method

        The __add__ method defines how the + operator works for Number objects by adding their 'value' attributes.
      2. Step 2: Calculate the addition

        num1.value is 5 and num2.value is 10, so 5 + 10 = 15.
      3. Final Answer:

        15 -> Option C
      4. Quick Check:

        __add__ adds values = 15 [OK]
      Hint: __add__ defines + behavior for objects [OK]
      Common Mistakes:
      • Expecting string concatenation '510'
      • Thinking it causes a TypeError
      • Assuming it returns None
      4. Identify the error in this code snippet:
      class Person:
          def __init__(self, name):
              self.name = name
          def __str__(self):
              return name
      
      p = Person('Alice')
      print(p)
      medium
      A. Using undefined variable 'name' in __str__
      B. No error, code runs fine
      C. Incorrect method name __str__
      D. Missing return statement in __str__

      Solution

      1. Step 1: Check the __str__ method's return value

        The method returns 'name', but 'name' is not defined inside __str__; it should use self.name.
      2. Step 2: Understand variable scope

        Since 'name' is undefined in __str__, this causes a NameError at runtime.
      3. Final Answer:

        Using undefined variable 'name' in __str__ -> Option A
      4. Quick Check:

        Use self.name inside methods [OK]
      Hint: Use self.variable to access attributes inside methods [OK]
      Common Mistakes:
      • Forgetting self. before attribute names
      • Thinking __str__ is misspelled
      • Assuming no error occurs
      5. You want to create a class where the length of an object returns the number of items it holds. Which magic method should you implement and how?
      hard
      A. Implement __count__(self) to return the count of items
      B. Implement __length__(self) to return the count of items
      C. Implement __size__(self) to return the count of items
      D. Implement __len__(self) to return the count of items

      Solution

      1. Step 1: Identify the magic method for length

        The built-in function len() calls the __len__ magic method on objects.
      2. Step 2: Confirm correct method name and purpose

        Only __len__ is the correct magic method to return the number of items.
      3. Final Answer:

        Implement __len__(self) to return the count of items -> Option D
      4. Quick Check:

        len() calls __len__ [OK]
      Hint: len() uses __len__ method inside objects [OK]
      Common Mistakes:
      • Using non-existent magic methods like __count__
      • Confusing method names with similar words
      • Not implementing any magic method