Practicing Python3 metaprogramming, decorators, descriptors, classes