class MetaTwo(type): def __new__(meta, classname, supers, classdict): print() print('In MetaTwo.new:', meta, classname, supers, classdict, sep='\n...') return type.__new__(meta, classname, supers, classdict) def __init__(Class, classname, supers, classdict): print() print('In MetaTwo.init:', Class, classname, supers, classdict, sep='\n...') print('...init class object:', list(Class.__dict__.keys())) class Super: pass print('Making class') class Hack(Super, metaclass=MetaTwo): # Inherits from Super, instance of MetaTwo data = 1 # Class data attribute def meth(self, arg): # Class method attribute return self.data + arg print('\nMaking instance') X = Hack() print('Attrs:', X.data, X.meth(2))