What could be wrong with this example from an architectural point of view:
class Base(object):
def say_hello(self):
self.hello()
class Child1(Base):
def hello(self):
print 'Hello child 1'
class Child2(Base):
def hello(self):
print 'Hello child 2'
c = Child1()
c.say_hello()
Assuming, this is just a simplified example, there is nothing wrong with the approach. Moreover, it has a name: Template Method.