Prinzipiell werden Metaklassen wie andere Klassen definiert, aber sie erben von „type“.
Ein anderer Unterschied besteht darin, dass Metaklassen automatisch aufgerufen werden, wenn die Klassendefinition, die die Metaklasse nutzt endet.
In anderen Worten: Falls kein "metaclass"-Schlüsselwort nach den Basisklassen erscheint, wird die Methode __call__ von type aufgerufen. Existiert ein metaclass-Schlüsselwort, dann wird die dazugehörige Klasse statt „type“ aufgerufen.
Im folgenden Beispiel erzeugen wir eine einfache Metaklasse, die eigentlich zu nichts außer zu Demonstrationszwecken nützlich ist.
Diese Klasse gibt die Inhalte der Argumente von __new__ aus.