abstractproperty is the only way to make this work on Python 2.