====== Python Dunder ======
Die "Dunder" (//double under//) gibt es
* als Variable
* als spezielle Funktionen (//magic function//)
* als Dateien
===== Variablen =====
* ''%%__all__%%'' enthält einen
* ''%%__author__%%'' Konvension darin den Namen des Autors der Software zu halten.
* ''%%__file__%%'' enthält den kompletten Pfad und Dateiname der aktuellen Datei.
* ''%%__name__%%'' enthält die vorangegangenen Pakete + den Dateinamen, wenn dieser nicht ''%%__init__%%.py'' ist.
* ''%%__version__%%'' Konvension darin einen String mit der Versionsnummer des Moduls oder Pakets zu halten. Z. B.: ''%%__version__%% = "1.0.1"''
===== Funktionen =====
===== Klassen Variablen =====
* ''%%__slots__%%'' (''str | Iterable'') enthält eine Liste von Feldern einer Klasse. Weitere Felder können nicht dynamisch angelegt werden.
===== Klassen Methoden =====
* ''%%__enter__%%'' //Context-Manager// beginn.
* ''%%__exit__%%'' //Context-Manager// ende.
* ''%%__get__%%'' Allgemeiner //getter// für //properties// (siehe auch ''%%__set__%%'').
* ''%%__post_init__%%'' in ''dataclass'''es
* ''%%__set__%%'' Allgemeiner //setter// für //properties// (siehe auch ''%%__get__%%'').
===== Dateien =====
* ''%%__init__%%.py'' macht ein Verzeichnis zu einem Paket (//package//)
* ''%%__main__%%.py'' wird als erstes ausgeführt, wenn man den Python Interpreter ein Verzeichnis als Argument gibt.
===== Verzeichnisse =====
* ''%%__pycache__%%'' Ein //Cache// für kompilierte Python Dateien (''*.py'' -> ''*.pyc'').
Siehe auch [[https://www.pythonmorsels.com/every-dunder-method/]]