Welcome to Day 2! Today we focus on two core pillars of Object-Oriented Programming:

Encapsulation: Hiding internal state and requiring all interaction to go through performing validation or controlled methods.

Abstraction: Hiding complex implementation details and exposing only a clean, simplified interface to the user.

1. Access Modifiers: Public, Protected, & Private 🛡️

Python does not have strict enforcement keywords like public or private found in Java or C++. Instead, it uses naming conventions and name mangling to communicate intent and protect internal data.