Const in Python

Gelegentlich ist es recht sinnvoll, immutable values (also nicht veränderbare Werte) in Programmen zu verwenden. Nein, eigentlich ist es in sehr vielen Szenarien das richtige Vorgehen, konstante Werte zu nutzen. Beispielsweise um Magic Numbers zu vermeiden.

Bei der Suche nach dem Konzept unveränderlicher Werte stößt man irgendwann darauf, dass es Konstanten in Python nicht gibt (via StackOverflow). Die markierte Antwort des Threads schlägt neben der Konvention, Konstanten groß zu schreiben und sich darauf zu verlassen, dass kein Programmierer diese (potentiell mutable) "Konstante" ändert einen interessanten Code-Snippet vor.

Dieser definiert eine neue Klasse, welche in ihrem __dict__ (also einem Verzeichnis über alle bekannten und zu dieser Klasse gehörenden Felder) jegliche Konstanten definiert. Um das überschreiben von Werte zu verhindern, wird die __setattr__()-Methode der Klasse überschrieben und eine Ausnahme ausgelöst, falls ein Bezeichner bereits für eine andere Konstante verwendet (sprich gebunden) wurde.

Interessantes Konzept, allerdings etwas schade, dass Konstanten nicht nativ von Python unterstützt werden.

social