class A:
    def f(self):
        print('f')
        self.g()

    def g(self):
        raise NotImplementedError()

class B(A):
    def g(self):
        print('g')

B().f()
A().f()
