Wenden wir die Funktion type auf einen Klassennamen wie „list“ oder „str“ direkt an, erhalten wir als Ergebnis die Klasse „type“.
Wir können sehen, dass Klassen ihrerseits Instanzen der Klasse „type“ sind.
Dadurch ist es Möglich Metaklassen zu programmieren: Wir definieren Klassen, die von der Klasse „type“ erben.
Die Funktion „type“ kann man statt mit einem Argument auch mit drei Argumenten aufrufen:
type(classname, superclasses, attributes_dict)
"classname" ist ein String, der den Klassennamen definiert.
"superclasses" ist eine Liste oder ein Tupel mit den Namen der Superklassen der Klasse.
„attributes_dict“ ist ein Dictionary, welches als Namensraum für unsere Klasse fungiert.