Dynamically defining properties on Python objects: https://gist.github.com/Wilfred/49b0409c6489f1bdf5a5c98a488b31b5 (forced me to use some crazy metaprogramming!)