Something Clicked on Day 16.
If you’ve been following this series, you know Days 1–15 were mostly functions, loops, dictionaries, and building small text-based…
Something Clicked on Day 16. But First, I Was Confused for a While.
Day 16 of 100 Days of Code — OOP, Classes, and the Quiz Game

If you’ve been following this series, you know Days 1–15 were mostly functions, loops, dictionaries, and building small text-based programs. It worked. The code ran. But somewhere around Day 14, I started noticing that my scripts were getting harder to read. Things were scattered. Variables were everywhere. Functions were doing too many jobs. Day 16 is where Angela explains why that happens — and what to do about it. The answer is Object-Oriented Programming. And honestly, it broke my brain a little before it made sense. What OOP Actually Is (In My Own Words) Before this day, I’d heard “OOP” before. It sounded serious. Like something senior developers talk about in job interviews. But the way it was introduced here made it less intimidating. The idea is basically this: Instead of writing a bunch of loose functions and variables, you create a class, a blueprint. That blueprint describes what something is (its attributes) and what it can do (its methods). Then you create objects from that blueprint. Think of a class like a cookie cutter. The cutter is the class. Every cookie you make from it is an object. Simple enough. Until you try to write it yourself. The self Keyword Almost Broke Me This was my wall on Day 16. Every method in a class starts with self as the first parameter. When I first saw it, I just copied it because it was there. I didn’t really understand what it meant. Then I removed it from one method to see what happened. Error. Immediately. The thing is self refers to the specific object that’s calling the method. If you have 10 quiz objects and one calls check_answer(), Python needs to know which quiz to look at. That’s what self is for. It’s the object talking to itself. Once I got that, the rest started to make more sense. Python That init method runs automatically whenever you create a new object. It sets up the object’s starting state. The double underscores () mean it’s a special method in Python — they call these “dunder methods.” I did not know that before this day. The Project: Quiz Game The main project for Day 16 is a Quiz Game. You’re given a list of questions and answers, and the program asks them one by one, checks your answer, keeps score, and tells you when you’re done. But the interesting part isn’t just the game it’s how it’s structured. Instead of one big messy script, the project is split across multiple files: data.py — holds the question data question_model.py — contains the Question class quiz_brain.py — contains the QuizBrain class (handles the game logic) main.py — puts it all together That separation was new. I was used to writing everything in one file. Seeing it split like that made it feel more… real? Like an actual program, not just a script I’m practicing on. Python PrettyTable — A Small Side Thing That Was Actually Cool Angela also introduced PyPI (the Python Package Index) on this day, and used a module called PrettyTable to show how third-party packages work. You install it with pip, import it, and suddenly your console output looks like a structured table instead of raw text. It’s a small thing. But it was the first time I installed an external package on purpose and used it. Made me feel like I was doing slightly more real-world Python. What Actually Changed After This Day I won’t pretend OOP completely clicked for me in one day. It didn’t. I kept going back and re-reading what init__ was doing and why self was necessary. It took a few run-throughs before I stopped second-guessing it. But something did shift: I started seeing code differently. Before Day 16, when I wrote a program, I thought in steps. Do this, then this, then this. After Day 16, I started thinking in objects. What things exist in this program? What do they know? What can they do? That’s a different way of thinking. And I’m still building it. Where This Is Going Day 16 is described as intermediate but it doesn’t feel intermediate. It feels like the actual beginning of writing code that can grow. I have a feeling OOP is going to come back over and over in the next days. For now, the Quiz Game runs. The classes work. The score tracks correctly. That’s enough.
메타데이터
- post_id
- 2c31e9ccdbe7
- slug
- something-clicked-on-day-16-2c31e9ccdbe7
- url
- https://medium.com/@sadiqnagoda1848/something-clicked-on-day-16-2c31e9ccdbe7
- canonical_url
- https://medium.com/@sadiqnagoda1848/something-clicked-on-day-16-2c31e9ccdbe7
- author_url
- https://medium.com/@sadiqnagoda1848
- status
- ok
- fetched_at
- 2026-06-09 15:37:30