Bird
Raised Fist0

You want to create a class Student that stores name and grades list. Which __init__ method correctly initializes these attributes?

hard🚀 Application Q8 of Q15
Python - Constructors and Object Initialization
You want to create a class Student that stores name and grades list. Which __init__ method correctly initializes these attributes?
Adef __init__(self, name, grades=None): self.name = name self.grades = grades or []
Bdef __init__(self, name, grades): self.name = name self.grades = grades
Cdef __init__(self, name, grades=[]): self.name = name self.grades = grades
Ddef __init__(self, name): self.name = name self.grades = []
Step-by-Step Solution
Solution:
  1. Step 1: Understand mutable default arguments

    Using a mutable default like [] directly can cause shared state across objects.
  2. Step 2: Analyze each option

    def __init__(self, name, grades=None): self.name = name self.grades = grades or [] uses None default and assigns a new list inside, avoiding shared mutable defaults.
  3. Final Answer:

    def __init__(self, name, grades=None): self.name = name self.grades = grades or [] -> Option A
  4. Quick Check:

    Avoid mutable defaults; use None and assign inside = B [OK]
Quick Trick: Never use mutable objects as default parameters [OK]
Common Mistakes:
MISTAKES
  • Using empty list as default parameter directly
  • Not initializing mutable attributes properly
  • Causing shared data between instances

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Python Quizzes