Object Orientation (OO) is often introduced in terms of how it is implemented by a specific language. However, understanding the theory underlying OO is not quite the same as understanding how OO concepts are supported by a particular language. It is insightful to understand the simple OO fundamentals and how these map to the particular implementation provided by Python.
In this talk I will first explain the very basics of OO from a language-neutral point of view with the aim of showing what OO can offer you. I will touch upon the simple mathematical theory underlying OO and how it can be used as a mental discipline to improve your natural capacity to reason about programs. I hope to give you enough information to help you distinguish between better and worse designs and to detect whether you're using OO as it was intended. I will show how these fundamentals map to Python, and compare the difference of Python's implementation to that of some other languages (even functional languages).
This talk is for anyone: whether you're new at Object Orientation, or a practitioner wondering whether OO is worth the effort you've spent trying to use it.