Чтобы избежать ошибки NotImplementedError при работе с абстрактными классами в Python, можно использовать блоки try и except для обработки исключений. 14
Например, при использовании метода super() в цепочке подклассов каждый вызов нужно оборачивать в такой блок: 3
class Useful(Abstract): def spam(self): try: super(Useful, self).spam() except NotImplementedError, e: pass print('It's okay.')
Также можно не вызывать NotImplementedError для абстрактных методов, так как они могут иметь реализации по умолчанию. 2
Ещё один способ — знать, какие методы суперкласса реализованы, а какие нет, потому что они абстрактные. 3 Для этого можно прочитать исходный код. 3