Abstract Base Classes in Python decorators metaclasses metaprogramming Notebook OOP Python Python2 Python3 Apr 3, 2016