Unlocking Python's Potential: OOP, SOLID, and Design Patterns Demystified
vivek keshore (~vivek17) |
8
Description:
Have you ever wondered, what are design principles and design patterns? How does it make any difference to the application code Object-Oriented Programming is one of the most popular method of modern software development, yet it is one of the most misunderstood concept. Everyone knows the words and definition of popular words like Abstraction, Polymorphism, Inheritance, and encapsulation, yet very few can actually explain beyond book definition or implement these in real world scenarios, and implementing the code in Python using various magic methods, design principles and design patterns adds an extra layer of complexity.
The objective of this workshop is to cultivate the Object-Oriented Design thinking, and eliminating all the misunderstandings around the Object-Oriented paradigm, enlighten the attendees with the knowledge and usage of design principles and design patterns. Understanding advanced concepts such as magic methods, SOLID principles, and design patterns has become imperative for developers to build robust, scalable, and maintainable software solutions.
This workshop offers a unique opportunity for Python developers to deepen their understanding on the topic, and by attending this session, participants will gain valuable insights and practical knowledge that they can apply in their projects, ultimately becoming more proficient and effective Python programmers.
The workshop would begin by dissecting Python Object-Oriented Programming (OOP), covering fundamental concepts, practical examples, and best practices for class design. Participants would delve into Python Magic Methods, understanding their significance and leveraging them for customized class behavior. SOLID Design Principles would be discussed through real-world examples, application tips, and case studies highlighting their benefits. The highlight of the workshop would be understanding various Design Patterns, along with detailed discussion, and practical insights into their importance and application.
The three hour workshop would be full of live coding and interactive knowledge sharing.
Workshop Details
1. Understanding Python Object-Oriented Programming (OOP) (30 minutes):
- Overview of OOP concepts: classes, objects, inheritance, polymorphism, and encapsulation.
- Practical examples and hands-on exercises to reinforce understanding.
- Best practices for designing and implementing classes in Python.
2. Exploring Python Magic Methods (30 minutes):
- Introduction to magic methods and their significance in Python.
- Deep dive into magic methods.
- Demonstrations on how to leverage magic methods to customize class behavior.
3. Mastering SOLID Design Principles (50 minutes):
- Explanation of SOLID principles.
- Practical tips for applying SOLID principles in Python projects.
- Case studies showcasing the benefits of adhering to SOLID design.
4. Understanding Design Patterns (60 minutes):
- Overview of commonly used design patterns - Creational, Structural, Behavioral
- In-depth discussion and implementation of key design patterns such as Factory, Singleton, Observer, Strategy, Adapter, Decorator.
- Elaboration on the importance of each design pattern, scenarios where they are most useful, and potential pitfalls to avoid.
- Comparison of design patterns with real-world analogies to enhance understanding and applicability (5 minutes).
5. Key take away points and conclusion (10 mins)
Prerequisites:
Basic knowledge of Python
Speaker Info:
I am a Python Enthusiast who loves building software applications and education related content. I am a technology professional and a passionate programmer with 12 years of experience in Python & Python related technologies. I am currently working as Architect at SenecaGlobal Inc, Hyderabad.
I have been involved with multiple professional projects in various industrial domains and technical fields. My expertise is in application development, data processing & analysis, data pipelines, data structures, & algorithms, various non-relational and relational databases, Python, Flask, FastAPI, Celery, Redis, Cassandra, AWS, Airflow, GreatExpectations, Docker, and various other tech stacks. I am also an open source contributor, and published self developed libraries on PyPI. I love creating libraries and various utility tools that help me in solving a challenge/problem that could also be used by others in the developers community.
My personal interest is in exploring new technologies, web application development, IoT systems, spread Python education, and read novels. I also write and share my thoughts occasionally on Quora and Medium.
Speaker Links:
Delivered workshop - PyCon 2023
From Novice to Virtuoso: Mastering Object-Oriented Python in 3 Hours
PyPI Libraries
- Flask-Dantic - Library to integrate Pydantic with Flask
- Lazy Alchemy - A library to load SQLAlchemy Tables Lazily
- And many more in progress ...
Docker HUB
Medium Articles (Published in NerdForTech and MLearning.ai)
https://vivek-keshore.medium.com