====== 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/]]