Python Object Oriented Programming OOP Beginner to Pro

Deep OOP Foundations From Absolute Scratch
Python Object Oriented Programming OOP Beginner to Pro
File Size :
6.66 GB
Total length :
26h 45m



Andy Bek


Last update




Python Object Oriented Programming OOP Beginner to Pro

What you’ll learn

Learn Python object-oriented programming from the ground up with in-depth lectures and practice activities
Work through 16 detailed project assignments to put your learning to practice
Write your own classes with customized behavior, representation, and relationships
Understand inheritance and multiple inheritance including best practices and the ideal use cases
Understand modern language constructs like dataclasses, enumerations, slots, and more
Master the Pythonic style of working with types, built-ins, and their derivatives
Get a deep understanding of the more difficult parts including descriptors, abstract base classes and metaprogramming
Create your own version of data structures with special behaviour, e.g. a list that sorts itself, or a dictionary that never raises KeyError
Work effectively with the exceptions and define your own separate exception hierarchies

Python Object Oriented Programming OOP Beginner to Pro


A computer (Windows/Mac/Linux). That’s all!
Prepare to write thousands of lines of Python code
No prior knowledge of python is required


Welcome to the best resource online and the only one you need to learn and master object-oriented programming with modern python! There has never been a better time to learn python. It is consistently ranked in the top 3 most in-demand and most-loved programming languages in the world, with applications in machine learning, web development, data science, automation, game development, and much more. And its growth shows no signs of stopping. But while there are plenty of resources to learn the basics of python, it is quite difficult to move past those to the intermediate and advanced facets of the language. This course seeks to address that. Over more than 20 hours of detailed lectures, live coding, and guided projects we will unpack everything that python has to offer, starting from absolute scratch. We will master not only object-oriented python and how to use it, but in the process also gain an understanding of the python data model and the essence of writing pythonic code. Every five to ten lectures we will stop and practice what we have covered, as we work through a list of detailed requirements and convert that to an object-oriented solution using nothing by zero-dependencies, pure python. ––––– Structure & Curriculum –––––The curriculum is organized around three parts of increasing target proficiency.In the first, we will cover the essential foundations of working with classes in python, defining our own types, customizing them using dunders, exposing managed attributes through properties and effectively using inheritance.· Classes· Dunders· Properties· InheritanceHaving established that core foundation, in the next five sections, we will dive into more advanced topics that effective python developers rely on. These include modern features like dataclasses, enumerations and slots but also more established, pivotal constructs like descriptors and exceptions.· Slots· Dataclasses· Descriptors· Enumerations· ExceptionsThen in the final four sections we will take a look under the hood at how python recognizes and works with types. We will explore, practice and implement several patterns including duck typing, dynamic protocols and abstract base classes. Finally, we will look at the internal machinery that produces classes in python, as we turn our attention to class metaprogramming.· Dynamic Protocols· Abstract Base Classes· Multiple Inheritance· Class MetaprogrammingThis course is intended for anyone who is committed to mastering object-oriented programming with python, regardless of prior experience, which is why a full-length bonus introduction to the python programming language is included to get anyone up and running writing pythonic code in no time.I hope you commit to joining me in this journey as we take your python to the next level. See you inside!


Section 1: Introduction

Lecture 1 Introduction

Lecture 2 All Course Resources

Section 2: Classes

Lecture 3 Section Intro

Lecture 4 PEP8

Lecture 5 Our First Class

Lecture 6 Class State

Lecture 7 Methods And Behaviour

Lecture 8 Instance Attributes

Lecture 9 Alternatively: getattr() And setattr()

Lecture 10 Revisting self

Lecture 11 Skill Challenge #1

Lecture 12 Solution

Lecture 13 Class and Static Methods

Lecture 14 BONUS: An Alternative Syntax

Lecture 15 Dunder Dict

Lecture 16 Class vs Instance __dict__

Lecture 17 BONUS: Careful With Mutables

Lecture 18 Access Control

Lecture 19 Docstrings

Lecture 20 Skill Challenge #2

Lecture 21 Solution

Lecture 22 Quick Gotcha

Lecture 23 Section Resources

Section 3: Dunders

Lecture 24 Section Intro

Lecture 25 Let’s Add A __repr__

Lecture 26 __repr__ vs __str__

Lecture 27 __format__

Lecture 28 Object Equality

Lecture 29 BONUS: Non-Equality

Lecture 30 Hashing and Mutability

Lecture 31 Hashable Book

Lecture 32 BONUS: Hashing Gotcha

Lecture 33 Skill Challenge #3

Lecture 34 Solution

Lecture 35 Other Rich Comparisons

Lecture 36 A Better Way

Lecture 37 Truthiness

Lecture 38 BONUS: Truth Value Testing Via __len__

Lecture 39 Container Classes

Lecture 40 Pythonic Add

Lecture 41 The __getitem__ Magic

Lecture 42 Defining Our Own Magics

Lecture 43 Skill Challenge #4

Lecture 44 Solution

Lecture 45 Section Resources

Section 4: Properties

Lecture 46 Section Intro

Lecture 47 Loyal Customers

Lecture 48 Always Start Plain

Lecture 49 A Refactor

Lecture 50 Private And Mangled Attributes

Lecture 51 Breaking Changes

Lecture 52 Properties Live In The Class

Lecture 53 Skill Challenge #5

Lecture 54 Solution

Lecture 55 Decorator Syntax

Lecture 56 BONUS: Decorators Refresher

Lecture 57 Read or Write Only Properties

Lecture 58 Managed Attributes

Lecture 59 BONUS: Caching Average Review

Lecture 60 Deleting Properties

Lecture 61 Property Docstrings

Lecture 62 Skill Challenge #6

Lecture 63 Solution

Lecture 64 Section Resources

Section 5: Inheritance

Lecture 65 Section Intro

Lecture 66 Inheritance

Lecture 67 What Is Inheritance Good For?

Lecture 68 All Classes Inherit From object

Lecture 69 Method Resolution Order

Lecture 70 Subclass Overrides

Lecture 71 Better Parent Delegation: super()

Lecture 72 Subclass __init__

Lecture 73 Skill Challenge #7

Lecture 74 Solution

Lecture 75 Subclassing Properties

Lecture 76 Extending Built-ins

Lecture 77 Another Example

Lecture 78 Beware The Pitfalls

Lecture 79 Beyond Inheritance

Lecture 80 Skill Challenge #8

Lecture 81 Solution

Lecture 82 Section Resources

Section 6: Slots

Lecture 83 Section Intro

Lecture 84 Instance Data Storage Review

Lecture 85 Slots

Lecture 86 Class Residents

Lecture 87 BONUS: Demonstrating The Memory Advantage

Lecture 88 Inheriting Slots

Lecture 89 Something To Avoid

Lecture 90 Should We Always Use Slots?

Lecture 91 Skill Challenge #9

Lecture 92 Solution

Lecture 93 Section Resources

Section 7: Dataclasses

Lecture 94 Section Intro

Lecture 95 The Why

Lecture 96 An Alternative: namedtuple

Lecture 97 BONUS: A Quick Point On Immutability

Lecture 98 BONUS: Typed NamedTuple

Lecture 99 Dataclasses

Lecture 100 Batteries Included

Lecture 101 Type Hints

Lecture 102 Customizing Fields

Lecture 103 BONUS: Further Customization

Lecture 104 Immutability

Lecture 105 Inheritance

Lecture 106 Why Not Just Namedtuples?

Lecture 107 Skill Challenge #10

Lecture 108 Solution

Lecture 109 Section Resources

Section 8: Descriptors

Lecture 110 Section Intro

Lecture 111 Attribute Lookup Chain Review

Lecture 112 The Descriptor Protocol

Lecture 113 Using A Descriptor

Lecture 114 Descriptor Storage

Lecture 115 Even Better: Instance Storage

Lecture 116 Using __set_name__

Lecture 117 Tying Up Loose Ends

Lecture 118 Non-Data Descriptors

Lecture 119 Aren’t Properties Just Better?

Lecture 120 BONUS: Similar How?

Lecture 121 Skill Challenge #11

Lecture 122 Solution

Lecture 123 Refactored Solution

Lecture 124 Section Resources

Section 9: Enums

Lecture 125 Section Intro

Lecture 126 What’s The Point?

Lecture 127 Enumerations

Lecture 128 Members

Lecture 129 Aliases vs Masters

Lecture 130 Uniqueness

Lecture 131 BONUS: Functional Syntax

Lecture 132 Automatic Values

Lecture 133 Customizing Next Values

Lecture 134 Extensibility

Lecture 135 Flags

Lecture 136 Bitmasks

Lecture 137 BONUS: How Bitwise Works

Lecture 138 Skill Challenge #12

Lecture 139 Solution

Lecture 140 Section Resources

Section 10: Exceptions

Lecture 141 Section Intro

Lecture 142 The Exception Object

Lecture 143 Handling

Lecture 144 Raising

Lecture 145 EAFP

Lecture 146 What’s Up With SyntaxError?

Lecture 147 Exception Hierarchy

Lecture 148 The Else Clause

Lecture 149 Finally

Lecture 150 Nesting And Bundling

Lecture 151 Rolling Our Own

Lecture 152 Skill Challenge #13

Lecture 153 Solution

Lecture 154 Section Resources

Section 11: Dynamic Protocols

Lecture 155 Section Intro

Lecture 156 Python Is Dynamically Typed

Lecture 157 Duck Typing

Lecture 158 Protocols

Lecture 159 The Making Of A Sequence

Lecture 160 ZooFavorites

Lecture 161 Pythonic Slicing

Lecture 162 BONUS: From Iteration To Iterables And Iterators

Lecture 163 BONUS: The Iterator Protocol

Lecture 164 BONUS: Extreme Duck Typing

Lecture 165 Skill Challenge #14

Lecture 166 Solution

Lecture 167 Section Resources

Section 12: Abstract Base Classes

Lecture 168 Section Intro

Lecture 169 Duck Typing May Be Enough

Lecture 170 Type Checking Refresher

Lecture 171 Abstract Base Classes

Lecture 172 BONUS: When Should We Create Our Own?

Lecture 173 Standard Lib ABCs

Lecture 174 A Quick Look Under The Hood

Lecture 175 Skill Challenge #15

Lecture 176 Solution

Lecture 177 Refactored Solution

Lecture 178 Re-refactored Solution

Lecture 179 Section Resources

Section 13: Multiple Inheritance

Lecture 180 Section Intro

Lecture 181 It Makes Sense

Lecture 182 Sharing Behaviour

Lecture 183 Parent __init__()

Lecture 184 Revisiting super()

Lecture 185 Variadics

Lecture 186 The Diamond Problem

Lecture 187 What Drives __mro__?

Lecture 188 Worth It?

Lecture 189 Mixins

Lecture 190 Organizing Interfaces

Lecture 191 Skill Challenge #16

Lecture 192 Solution

Lecture 193 Section Resources

Section 14: Class Metaprogramming

Lecture 194 Section Intro

Lecture 195 What Is Meta?

Lecture 196 Classes Are Objects

Lecture 197 type() As Class Factory

Lecture 198 BONUS: More On Dynamic Class Creation

Lecture 199 Defining Our Own Metaclass

Lecture 200 Inside The Belly Of The Monster

Lecture 201 Exhibit A: Zero Instance Classes And Singletons

Lecture 202 Exhibit B: Enforcing Unique Method Names

Lecture 203 Deeper Magic Than 99%

Lecture 204 Section Resources

Section 15: Appendix A – A Brief Introduction To Python

Lecture 205 Welcome

Lecture 206 Data Types

Lecture 207 Arithmetic And Augmented Assignment Operators

Lecture 208 Ints And Floats

Lecture 209 Booleans And Comparison Operators

Lecture 210 Strings

Lecture 211 Methods

Lecture 212 Containers I – Lists

Lecture 213 Lists vs. Strings

Lecture 214 List Methods And Functions

Lecture 215 Containers II – Tuples

Lecture 216 Containers III – Sets

Lecture 217 Containers IV – Dictionaries

Lecture 218 Dictionary Keys And Values

Lecture 219 Membership Operators

Lecture 220 Controlling Flow – if, else, And elif

Lecture 221 Truth Value Of Non-booleans

Lecture 222 For Loops

Lecture 223 The range() Immutable Sequence

Lecture 224 While Loops

Lecture 225 Break And Continue

Lecture 226 Zipping Iterables

Lecture 227 List Comprehensions

Lecture 228 Defining Functions

Lecture 229 Function Arguments – Positional vs Keyword

Lecture 230 Lambdas

Lecture 231 Importing Modules

Everyone interested in learning and mastering object-oriented python from the ground up,Learners with some Python experience who want to take their skill to the next level,Python developers who want to gain a deeper understanding

Course Information:

Udemy | English | 26h 45m | 6.66 GB
Created by: Andy Bek

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top