As an object-oriented programming language, Python requires you to deal with classes extensively. Classes themselves are an abstraction provided by the language for your convenience, and they do a lot of work for you under the hood, particularly when it comes to inheritance; in particular, multiple inheritance. In this course, you will get a better understanding of what goes on under the hood so as not to build a class hierarchy with unintended consequences. We'll also look at the concept of "mixins", a useful way to think about reusable classes.
- Students should already be comfortable with Python language fundamentals, including: writing and using classes, methods, and functions, using container objects (e.g., list or dictionary), using decorators, using string formatting, using conditional operators