In Python this can be achieved by neutering a class:
import types class Prototype: class __metaclass__(type): def __new__(self, name, bases, dict): for member, value in dict.items(): if type(value) == types.FunctionType: dict[member] = classmethod(value) return type.__new__(self, name, bases, dict) __new__ = NotImplemented
All methods are converted into classmethods, and the class can not be instantiated. Use of classmethod rather than staticmethod is crucial: When classmethod is used, the method is passed the class as the first argument (much like an instance is passed "self"). This means a method defined in a superclass can call other methods which have possibly been customized in sub-classes.
One trick here: When invoking a super-class's overridden method from a sub-class, one must call Superclass.function.im_func(self, other arguments).