We may earn an affiliate commission when you visit our partners.
Dr. Fred Baptiste

This Python3: Deep Dive Part 4 course takes a closer look at object oriented programming (OOP) in Python.

You must have a strong working knowledge of functional Python programming as well as some practical experience developing Python applications in order to fully benefit from this course.

Read more

This Python3: Deep Dive Part 4 course takes a closer look at object oriented programming (OOP) in Python.

You must have a strong working knowledge of functional Python programming as well as some practical experience developing Python applications in order to fully benefit from this course.

  • In-depth functional Python programming

  • functions, closures, scopes, decorators (using and writing them)

  • zip, sorted, any, all, and the itertools module in general

  • sequences, iterables, iterators and generators (what they are and how to implement the corresponding protocols)

  • generators, yield, and context managers

  • mapping types, hashing and relation to object equality

  • some prior knowledge of basic OOP concepts

  • know how to work with Python virtual environments and pip install

  • available Jupyter Notebook (freely available) to follow along with the course notebooks

  • how to use git

[Please note that this is not a cookbook style course - I don't show you how to solve specific problems, but rather a broad and in-depth look at how OOP works in the context of Python, that will allow you to apply these concepts and techniques to your own problems.]

Enroll now

What's inside

Learning objectives

  • Python object oriented concepts
  • Classes
  • Methods and binding
  • Instance, class and static methods
  • Properties
  • Property decorators
  • Single inheritance
  • Slots
  • Descriptors
  • Enumerations
  • Exceptions
  • Metaprogramming

Syllabus

Introduction
Classes are Callables - Lecture
Prerequisites
Course Slides
Read more
Classes
Objects and Classes - Lecture
Objects and Classes - Coding
Class Attributes - Lecture
Class Attributes - Coding
Callable Class Attributes - Lecture
Callable Class Attributes - Coding
Classes are Callables - Coding
Data Attributes - Lecture
Data Attributes - Coding
Function Attributes - Lecture
Function Attributes - Coding
Initializing Class Instances - Lecture
Initializing Class Instances - Coding
Creating Attributes at Run-Time - Lecture
Creating Attributes at Run-Time - Coding
Properties - Lecture
Properties - Coding
Property Decorators - Lecture
Property Decorators - Coding
Read-Only and Computed Properties - Lecture
Read-Only and Computed Properties - Coding
Deleting Properties - Lecture
Deleting Properties - Coding
Some Questions on the Property Class
Class and Static Methods - Lecture
Class and Static Methods - Coding
Python Builtin and Standard Types
Class Body Scope - Lecture
Class Body Scope - Coding
Quick Recap
Project 1
Project Description
Project Solution - TimeZone
Project Solution - Transaction Numbers
Project Solution - Account Numbers, Names
Project Solution - Preferred TimeZone
Project Solution - Account Balance
Project Solution - Interest Rate
Project Solution - Transaction Codes
Project Solution - Confirmation Codes
Project Solution - Transactions
Project Solution - Testing with unittest
Polymorphism and Special Methods
__str__ and __repr__ Methods - Lecture
__str__ and __repr__ Methods - Coding
Arithmetic Operators - Lecture
Arithmetic Operators - Coding
Rich Comparisons - Lecture
Rich Comparisons - Coding
Hashing and Equality - Lecture
Hashing and Equality - Coding
Booleans - Lecture
Booleans - Coding
Callables - Lecture
Callables - Coding
The __del__ Method - Lecture
The __del__ Method - Coding
The __format__ Method - Lecture
The __format__ Method - Coding
Project 2
Project Solution
Single Inheritance
Single Inheritance - Lecture
Single Inheritance - Coding
The object Class - Lecture
The object Class - Coding
Overriding - Lecture
Overriding - Coding
Extending - Lecture
Extending - Coding
Delegating to Parent - Lecture
Delegating to Parent - Coding
Slots - Lecture
Slots - Coding
Slots and Single Inheritance - Lecture
Slots and Single Inheritance - Coding
Project 3
Project 3 - Description
Project Solution - Approach and Setup
Project Solution - Validators and tests
Project Solution - Resources class and tests
Project Solution - CPU class and tests
Project Solution - Storage class and tests
Project Solution - HDD and SSD classes and tests
Descriptors
Descriptors - Lecture
Descriptors - Coding
Getters and Setters - Lecture
Getters and Setters - Coding

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Assumes a strong foundation in functional Python, including closures, decorators, and the itertools module, which is essential for advanced programming
Covers metaprogramming, a powerful technique for customizing class creation and behavior, which is useful for building frameworks and libraries
Explores descriptors, which are useful for managing attribute access and implementing advanced object behaviors, such as validation and computed properties
Requires familiarity with Python virtual environments and pip install, which are essential for managing dependencies in Python projects
Requires familiarity with Git, which is essential for version control and collaboration in software development projects
Does not show how to solve specific problems, but rather a broad and in-depth look at how OOP works, which may not suit learners seeking quick solutions

Save this course

Save Python 3: Deep Dive (Part 4 - OOP) to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Python 3: Deep Dive (Part 4 - OOP) with these activities:
Review Python Fundamentals
Solidify your understanding of fundamental Python concepts like data types, control flow, and functions to prepare for the advanced OOP topics covered in this course.
Browse courses on Python Basics
Show steps
  • Review Python data types (lists, dictionaries, tuples).
  • Practice writing functions and using control flow statements.
  • Work through basic Python exercises on platforms like HackerRank or LeetCode.
Review 'Fluent Python'
Deepen your understanding of Python's object model and special methods, which are crucial for mastering OOP in Python.
Show steps
  • Read the chapters on data structures and object-oriented idioms.
  • Experiment with the examples provided in the book.
  • Try to apply the concepts to your own projects.
Review 'Effective Python'
Learn best practices for writing Pythonic code, including those related to object-oriented programming.
Show steps
  • Read the sections related to classes and inheritance.
  • Apply the advice to your own projects.
  • Refactor existing code to follow the best practices.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple Game Using OOP
Apply your OOP knowledge by building a simple game like Tic-Tac-Toe or a text-based adventure game, focusing on class design and interactions.
Show steps
  • Plan the game's structure and classes.
  • Implement the classes and their methods.
  • Test and debug the game.
Implement OOP Design Patterns
Reinforce your understanding of OOP principles by implementing common design patterns like Singleton, Factory, and Observer in Python.
Show steps
  • Study the theory behind each design pattern.
  • Implement the pattern in Python.
  • Apply the pattern to a small project.
Create a Blog Post on Python Descriptors
Solidify your understanding of Python descriptors by writing a blog post explaining how they work and their use cases.
Show steps
  • Research Python descriptors thoroughly.
  • Write a clear and concise explanation of descriptors.
  • Include examples of how to use descriptors.
  • Publish the blog post on a platform like Medium or your own website.
Contribute to an Open Source Python Project
Gain practical experience with OOP by contributing to an open-source Python project that utilizes object-oriented principles.
Show steps
  • Find an open-source Python project on GitHub.
  • Identify an issue to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Python 3: Deep Dive (Part 4 - OOP) will develop knowledge and skills that may be useful to these careers:
Python Developer
A Python developer specializes in creating software using the Python programming language. This course is incredibly helpful to a Python developer, as it provides a very thorough exploration of Python's object oriented programming features, which are central to writing complex applications. The course covers topics such as properties, inheritance, slots, and descriptors, empowering a Python developer to write more sophisticated software. The course's emphasis on practical programming with Jupyter Notebooks, along with git, helps a Python developer hone their skills in real-world development scenarios.
Software Developer
A software developer designs, creates, and maintains software applications. This course, with its deep dive into object oriented programming in Python, directly helps a software developer write more efficient, scalable, and maintainable code. The course specifically covers classes, methods, inheritance, and other core OOP concepts, which are essential for any software developer who works with a modern programming language such as Python. The practical emphasis of this course, including projects and coding exercises, helps build a strong foundation in these vital principles. This course helps solidify object oriented concepts, making a software developer more effective in their role.
Backend Engineer
A backend engineer builds and maintains the server-side logic that powers web applications. This course helps a backend engineer as object oriented programming is essential for designing and developing robust backend systems. The course's focus on classes, methods, and inheritance enables a backend engineer to create modular, reusable, and scalable code. The course's in-depth look at Python helps a backend engineer working in a Python environment to produce clean concise and performant code. The course's coverage of subjects like descriptors helps a backend engineer be more effective in their role.
Software Architect
A software architect designs the overall structure of software systems. This course teaches object oriented programming, which is central to software design. The course's in depth study of classes, inheritance, and descriptors, helps a software architect design more scalable and maintainable systems. The course's focus on advanced concepts allows a software architect to create more modular, reusable, and flexible software designs. A software architect can use the principles learned here to build more robust and efficient software systems.
Machine Learning Engineer
A machine learning engineer is responsible for developing and deploying machine learning models. This course is useful to a machine learning engineer as it provides an understanding of object oriented programming in Python, essential for creating maintainable and efficient machine learning systems. The course's coverage of classes, methods, and inheritance allows a machine learning engineer to develop complex models with modular components. A machine learning engineer can use the course's material on descriptors and properties to create flexible and reusable machine learning components. The course's project based approach helps a machine learning develop the necessary skills.
Algorithm Developer
An algorithm developer designs and implements algorithms for various applications, often requiring complex data structures and logical operations. This course teaches object oriented programming in Python, which helps an algorithm developer create reusable and maintainable code. The course's focus on topics such as classes, methods, and inheritance provides a foundation for implementing complex algorithms in Python. With practice in writing Python and using Jupyter Notebooks, this course can be valuable to an algorithm developer who is applying algorithms in practice.
Data Scientist
A data scientist analyzes data to derive meaningful insights and build predictive models. While this course may not directly focus on statistical analysis, the object oriented concepts it teaches provides a data scientist with the ability to write more maintainable and scalable data processing pipelines and machine learning models. A data scientist can use Python to create custom data structures using classes and objects. The course's coverage of inheritance, for example, can allow a data scientist to create specialized machine learning models based on more general base classes. This course enables a data scientist to write more efficient, effective Python code.
Full-Stack Developer
A full stack developer works on both the front-end and back-end of web applications. This course helps a full stack developer who also works on the backend with Python. The course's detailed coverage of object oriented programming empowers a full stack developer to create well structured, maintainable Python code for the server side. Topics, such as classes, methods, and inheritance, helps a full stack developer design reusable and scalable components. For a full stack developer working with python, this course may be useful in improving a development workflow.
Research Scientist
A research scientist conducts scientific research, often involving complex data analysis and simulations. The object oriented programming principles this course provides helps a research scientist structure their code more effectively. The course's coverage of advanced OOP concepts helps a research scientist write more sophisticated simulations, which often require the use of classes and inheritance. The experience this course provides with Python may be useful to a research scientist who uses Python or similar languages in their research.
Data Engineer
A data engineer builds and manages the infrastructure for data storage and processing. While this course focuses on object oriented programming, it can help a data engineer develop more efficient and maintainable data pipelines using Python. The course content on classes, interfaces, and inheritance helps a data engineer build robust data processing workflows. This course may be useful for a data engineer using Python or similar languages in their work, especially in the creation of custom data structures.
Robotics Engineer
A robotics engineer designs, builds, and programs robots. This course explores object oriented programming in Python, which is beneficial for writing modular and maintainable robot control systems. The course's focus on classes and inheritance helps a robotics engineer organize complex robot behaviors into reusable components. If a robotics engineer is using Python, then this course will help make them more effective through object oriented programming.
Quantitative Analyst
A quantitative analyst develops and implements mathematical and statistical models for financial markets. This course, while focused on object oriented programming in Python, may be useful in creating custom tools to process and analyze quantitative financial data. The course's material on classes and inheritance can allow a quantitative analyst to create custom classes tailored to specific financial instruments or data structures. The Python programming skills this course provides may be valuable in a quantitative analyst's day to day work.
Game Developer
A game developer creates the software for video games. This course's focus on object oriented programming helps a game developer organize game logic into reusable components and manage complexity. The course's coverage of classes, inheritance, and methods allows a game developer to build efficient and scalable game systems. Game developers may find this course to be beneficial, especially if they are working with Python.
Embedded Systems Engineer
An embedded systems engineer designs software for embedded systems. Object oriented programming principles, as taught in this course, help an embedded systems engineer write more organized and maintainable code. The course's focus on classes, inheritance, and other OOP concepts enables an embedded systems engineer to break complex system logic into modular components. This course may be useful for an embedded systems engineer, especially if they are working with Python or languages that support OOP.
DevOps Engineer
A DevOps engineer automates and streamlines software development and deployment processes. While this course focuses on object oriented programming in Python, this may be useful for a DevOps engineer who is using Python to automate infrastructure tasks or to perform configuration management. A DevOps engineer may use their programming knowledge to create tools to automate tasks. The course on object oriented concepts may be beneficial to the DevOps Engineer.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Python 3: Deep Dive (Part 4 - OOP).
Provides a deep dive into Python's core features, including many aspects of OOP. It's particularly useful for understanding how Python's data model and special methods enable powerful and expressive code. It serves as an excellent reference for understanding the nuances of Python's object model and how it differs from other languages. This book expands on the course material by providing practical examples and in-depth explanations of advanced Python concepts.
Offers practical advice on writing clean, efficient, and Pythonic code. While not solely focused on OOP, it covers many best practices relevant to object-oriented design in Python. It valuable resource for improving your overall Python programming skills and writing more maintainable code. This book provides additional depth to the course by offering concrete examples and actionable advice on how to apply OOP principles effectively.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser