Metaclasses sind Factories die Klassen erstellen
also Klassen die Klassen erstellen
wenn eine Klasse erstellt wird und keine Metaklasse angegeben wird, wird „type“ als Metaklasse genutzt
deswegen sind die meisten Klassen vom Typ „type“
man muss bedenken das eine Klasse auch nur ein Objekt ist
Was passiert innerhalb der Metaklasse
wird eine neue Klasse erstellt (das die Metaklasse nutzt)
wird
new
der Metaklasse aufgerufen und gibt ein neues Klassen-Objekt zurück
wird zusammengebaut entsprechend des Codes mit entsprechendem Name, Methoden/Attributen
wird
init
der Metaklasse aufgerufen
wird ein Objekt aus irgendeiner Klasse abgeleitet wird
call
der Metaklasse aufgerufen
Eigene Metaklasse erstellen/nutzen
müssen immer vom Typ „typ“ abgeleitet werden
Nutzen:
class bla (metaclass=mymetaclass): pass