* 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