I did look at _abstract methods_, but they are required to be overridden in the inheriting class. The use of `__subclasshook__` effectively achieves the same of ensuring the methods exist, but means you can use the inherited methods.