Referenz:
Das Deklarieren einer Klasse entspricht dem Erstellen einer Instanz der Typklasse.
class C: ... ≡ C = type('C', ...)
Referenz:
Die "Metaclass" -Spezifikation passt diese Typinstanziierung an. Sie können die Klassengenerierung anpassen, wenn eine Klasse deklariert wird, indem Sie die Metaklasse "M" als Unterklasse vom Typ "deklarieren und die Methode" new "überschreiben:
class C(metaclass=M): ...
Wir spekulieren, dass es nicht möglich ist, die Anwendung von "M" zu erzwingen, wenn alle Klassen generiert werden [Untersuchung erforderlich].
Referenz:
Die Anpassung der Instanziierung erfolgt durch Definieren (Überschreiben) der Klassen "new" und "init".
Insbesondere durch Anpassen von "new" ist es möglich, andere Klasseninstanzen als die zu generierende Klasse zu generieren und zurückzugeben ("C" von "c = C (...)"). Dies kann zum Beispiel verwendet werden, um Factory-Klassen zu implementieren.
Andererseits wird, wie Sie wissen, __init__
verwendet, um die erstellte Instanz zu initialisieren (Eigenschaften festlegen usw.).
__prepare__
Ich werde diesmal untersuchen.
Recommended Posts