Welcome to Object-Oriented Programming (OOP) in Python! Up until now, we’ve handled data using individual variables, functions, and collections. OOP allows you to bundle related data (attributes) and behaviors (methods) together into clean, reusable custom types. 🧩

1. Classes, Objects, __init__, & self 🏛️

Class: The blueprint or template for creating objects (e.g., the architectural plan for a house).

Object (Instance): The concrete entity created in memory from that blueprint (e.g., the actual house built on a specific lot).

__init__ Method: A special method (constructor) that Python runs automatically whenever you instantiate a new object to set up its starting state.