What are the core pillars of Object-Oriented Programming (OOP) in Python, and how have you applied them in your past data engineering projects?