I still find Python's descriptor protocol a little complex. I think it will be easier once I've found a way to use it in anger.