(Persönliche Notizen) Python-Metaklassen und Metaprogrammierung

Klasse (oder Klassendeklaration) ist ein primäres Objekt

Referenz:

Das Deklarieren einer Klasse entspricht dem Erstellen einer Instanz der Typklasse.

 class C: ... ≡ C = type('C', ...)

Passen Sie die Klassengenerierung an

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].

Anpassung der Instanziierung

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.).

Nicht untersucht: __prepare__

Ich werde diesmal untersuchen.

Recommended Posts

(Persönliche Notizen) Python-Metaklassen und Metaprogrammierung
Python persönliche Notizen
fehlende Ganzzahlen Python persönliche Notizen
Hinweise zu Python- und Wörterbuchtypen
Persönliche Notizen für die Python-Bildverarbeitung
Persönliche Notizen zur Vorverarbeitung von Python Pandas-Daten
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
WEB-Scraping mit Python (für persönliche Notizen)
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Persönliche Notizen und Links zum maschinellen Lernen ① (Maschinelles Lernen)
(Python) Hinweise zum Lesen von HTML und zur Verwendung regulärer Ausdrücke
Apropos Python-Klassenattribute und Metaklassen
Python-Scraping-Memo
Metaprogrammierung mit Python
Python lernen note_000
Python-Lernnotizen
Python-Anfängernotizen
Python lernen note_006
Python C ++ Notizen
Python lernen note_005
Python-Grammatiknotizen
Python Library Hinweis
Python für mich Q.A.
Python Pandas Memo
Python lernen note_001
Python-Lernnotizen
Installationshinweise zu Python3.4
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Persönliche Notizen zum Dokumentieren von Python-Code in Sphinx
[Python] Komprimieren und dekomprimieren
Python- und Numpy-Tipps
[Python] Pip und Wheel
Zusammenfassung der persönlichen Notizen von Pandas
Implementierte List und Bool in Python und SQLite3 (persönliche Notiz)
Hinweise zur HDR- und RAW-Bildverarbeitung mit Python
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Bearbeiten Sie Excel-Dateien aus Python mit xlrd (persönliches Memo)
Ruby, Python und Map
Python-Memorandum (persönliches Lesezeichen)
Verwendungshinweise für Python Decorator
Python-Eingabe und Ausgabe
Python und Ruby teilen sich
Notizen im Python Pickle-Format
Erstes Python-Memo
Matlab => Python-Migrationsnotizen
Hinweise zur Python3-Zuweisung
Persönliche Hinweise zur Integration von vscode und anaconda
Hinweise zur Verwendung von Python-Unterprozessen
Python asyncio und ContextVar
Python versuchen / außer Memo
Hinweise zur Python-Framework-Flasche
Hinweise zum Bereitstellen von pyenv mit Homebrew und zum Verwalten von Python-Versionen
[Python] Hinweise zu while-Anweisungen (Schreibstil und Endlosschleife)
Hinweise zum Lesen und Schreiben von float32 TIFF-Bildern mit Python
Python-Memo mit perl-ternärem Operator