Bird
Raised Fist0
Pythonprogramming~5 mins

Default values in constructors 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 a constructor in Python classes?
A constructor is a special method named __init__ that runs when you create a new object from a class. It sets up the object’s initial state.
Click to reveal answer
beginner
How do you set a default value for a constructor parameter in Python?
You assign a value to the parameter in the __init__ method like def __init__(self, name='Guest'):. If no argument is given, the default is used.
Click to reveal answer
beginner
Why use default values in constructors?
Default values let you create objects without giving all details every time. This makes your code simpler and more flexible.
Click to reveal answer
beginner
What happens if you call a constructor without a parameter that has a default value?
The constructor uses the default value for that parameter automatically.
Click to reveal answer
beginner
Show a simple example of a Python class with a constructor that has a default value.
Example:<br><pre>class Person:
    def __init__(self, name='Guest'):
        self.name = name

p1 = Person()
print(p1.name)  # Output: Guest

p2 = Person('Alice')
print(p2.name)  # Output: Alice</pre>
Click to reveal answer
What is the purpose of a default value in a constructor parameter?
ATo make the constructor private
BTo provide a value if no argument is passed
CTo force the user to pass a value
DTo delete the parameter
How do you define a default value for a parameter in Python's __init__ method?
Adef __init__(self, param=default):
Bdef __init__(self, param): param = default
Cdef __init__(self, param): return default
Ddef __init__(self, param?=default):
What will print(p.name) output if p = Person() and def __init__(self, name='Guest')?
AError
BNone
CGuest
DEmpty string
Can you have multiple parameters with default values in a constructor?
ADefaults are not allowed in constructors
BNo, only one parameter can have a default
COnly the first parameter can have a default
DYes, all can have defaults
What happens if you call Person('Bob') when def __init__(self, name='Guest')?
AThe name 'Bob' is used instead of the default
BThe default 'Guest' is used anyway
CAn error occurs
DThe constructor ignores the argument
Explain how default values in constructors help when creating objects.
Think about what happens if you don't pass some values when making an object.
You got /4 concepts.
    Write a simple Python class with a constructor that has two parameters, one with a default value.
    Use <code>def __init__(self, param1, param2=default):</code> format.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using default values in a Python class constructor (__init__ method)?
      easy
      A. To prevent the class from being instantiated
      B. To make the constructor run faster
      C. To allow creating objects without providing all arguments
      D. To force the user to always provide all arguments

      Solution

      1. Step 1: Understand default values in constructors

        Default values let you set a value for a parameter if no argument is given when creating an object.
      2. Step 2: Identify the effect on object creation

        This means you can create an object without giving all arguments, and the defaults fill in the missing ones.
      3. Final Answer:

        To allow creating objects without providing all arguments -> Option C
      4. Quick Check:

        Default values = optional arguments [OK]
      Hint: Defaults let you skip arguments when creating objects [OK]
      Common Mistakes:
      • Thinking defaults speed up the constructor
      • Believing defaults prevent object creation
      • Assuming defaults force all arguments
      2. Which of the following is the correct way to set a default value for the parameter age in a Python class constructor?
      easy
      A. def __init__(self, age:30):
      B. def __init__(self, age): age=30
      C. def __init__(self, age): age == 30
      D. def __init__(self, age=30):

      Solution

      1. Step 1: Recall Python syntax for default parameters

        Default values are set by assigning a value in the parameter list, like age=30.
      2. Step 2: Check each option

        def __init__(self, age=30): uses correct syntax. def __init__(self, age): age=30 tries to assign inside the method header, which is invalid. def __init__(self, age): age == 30 uses comparison operator instead of assignment. def __init__(self, age:30): uses incorrect type hint syntax.
      3. Final Answer:

        def __init__(self, age=30): -> Option D
      4. Quick Check:

        Default parameter = param=value [OK]
      Hint: Default values go in the parameter list with = [OK]
      Common Mistakes:
      • Assigning default inside the method body
      • Using == instead of = for defaults
      • Confusing type hints with default values
      3. What will be the output of this code?
      class Person:
          def __init__(self, name, age=25):
              self.name = name
              self.age = age
      
      p = Person('Alice')
      print(p.name, p.age)
      medium
      A. Alice 25
      B. Alice None
      C. Alice 0
      D. Error: missing argument for age

      Solution

      1. Step 1: Analyze the constructor parameters

        The constructor has age=25 as a default, so if age is not given, it uses 25.
      2. Step 2: Check object creation and print

        We create p = Person('Alice') without age, so age is 25. Printing p.name and p.age shows 'Alice 25'.
      3. Final Answer:

        Alice 25 -> Option A
      4. Quick Check:

        Missing argument uses default [OK]
      Hint: Missing argument uses default value [OK]
      Common Mistakes:
      • Expecting error when argument is missing
      • Assuming default is None if not given
      • Confusing default with zero or empty string
      4. Find the error in this class constructor:
      class Car:
          def __init__(self, model='Sedan', year):
              self.model = model
              self.year = year
      medium
      A. Missing return statement in __init__
      B. Default parameter must come after non-default parameters
      C. self is missing in parameters
      D. Cannot assign to self attributes in constructor

      Solution

      1. Step 1: Check parameter order in constructor

        In Python, parameters with default values must come after parameters without defaults.
      2. Step 2: Identify the error in parameter order

        Here, model='Sedan' is a default parameter before year which has no default. This causes a syntax error.
      3. Final Answer:

        Default parameter must come after non-default parameters -> Option B
      4. Quick Check:

        Default params last in list [OK]
      Hint: Put all default parameters after non-default ones [OK]
      Common Mistakes:
      • Placing default parameters before required ones
      • Thinking __init__ needs return
      • Forgetting self parameter
      5. You want to create a class Book where the author defaults to 'Unknown' and pages defaults to 100 if not provided. Which constructor is correct?
      hard
      A. def __init__(self, author='Unknown', pages=100): self.author = author; self.pages = pages
      B. def __init__(self, author, pages=100='Unknown'):
      C. def __init__(self, author='Unknown', pages):
      D. def __init__(self, author='Unknown', pages=100):

      Solution

      1. Step 1: Check parameter defaults and order

        Both author and pages have default values, so order is flexible. Options B and C have syntax errors.
      2. Step 2: Verify constructor body assigns attributes

        def __init__(self, author='Unknown', pages=100): self.author = author; self.pages = pages correctly sets defaults and assigns self.author and self.pages inside the constructor body.
      3. Final Answer:

        def __init__(self, author='Unknown', pages=100): self.author = author; self.pages = pages -> Option A
      4. Quick Check:

        Defaults set in params, assign inside method [OK]
      Hint: Set defaults in params, assign inside __init__ [OK]
      Common Mistakes:
      • Incorrect default assignment syntax
      • Not assigning parameters to self
      • Mixing default values and assignments