Ivo Timmermans has a way to define abstract methods which is quite nice. For me, personally, a simpler implementation would suffice, though: # first version class AbstractMethodError(Exception): pass class Foo: def bar(self): raise AbstractMethodError class Bar(Foo): def bar(self): print 'yay!' Instances of Foo have a bar method that cannot be called, instances of Bar (which derives from Foo) have a "regular" bar method. ... [195 words]