# A simple function can serve as a metaclass too def MetaFunc(classname, supers, classdict): print('In MetaFunc:', classname, supers, classdict, sep='\n...') return type(classname, supers, classdict) class Super: pass print('Making class') class Hack(Super, metaclass=MetaFunc): # Run simple function at end data = 1 # Function returns class def meth(self, arg): return self.data + arg print('Making instance') X = Hack() print('Attrs:', X.data, X.meth(2))