Abstract Base Class without ABC



examples/oop/abc/no_abc.py
class NotImplementedError(Exception):
    pass

class Base():
    def foo(self):
        raise NotImplementedError()

    def bar(self):
        raise NotImplementedError()

class Real(Base):
    def foo(self):
        print('foo in Real')
    def bar(self):
        print('bar in Real')
    def other(self):
        pass

class Fake(Base):
    def foo(self):
        print('foo in Fake')

r = Real()
r.foo()
r.bar()
f = Fake()
f.foo()
f.bar()

foo in Real
bar in Real
foo in Fake
Traceback (most recent call last):
  File "no_abc.py", line 28, in <module>
    f.bar()    # NotImplementedError
  File "no_abc.py", line 9, in bar
    raise NotImplementedError()
__main__.NotImplementedError