Unveränderliche Objekte in Python: Jenseits grundlegender Lösungen
Während die Standard-Tupelklasse Unveränderlichkeit bietet, werden in diesem Artikel fortgeschrittenere Techniken zum Erstellen unveränderlicher Objekte untersucht in reinem Python oder mit C-Erweiterungen.
Überschreiben von __setattr__: Ein begrenzter Ansatz
Eine gängige Lösung besteht darin, die Methode setattr zu überschreiben. Dies verhindert jedoch das Setzen von Attributen auch in der Funktion init. Daher ist es möglicherweise nicht für alle Szenarien geeignet.
Unterklassen von Tupeln: Eine Teillösung
Ein anderer Ansatz besteht darin, Tupel in Unterklassen zu unterteilen und so ein benutzerdefiniertes neues Methode und Eigenschaften für den Zugriff auf Attribute. Allerdings verhindert diese Methode den Attributzugriff über self[0] und self[1] nicht vollständig, was unpraktisch sein kann.
Die benannte Tupellösung: Einfachheit und Kompatibilität
Eine einfachere und robustere Lösung besteht darin, die Klasse „namedtuple“ aus dem Python-Sammlungsmodul zu verwenden:<code class="python">Immutable = collections.namedtuple("Immutable", ["a", "b"])</code>
Fazit
Die Namedtuple-Klasse bietet eine bequeme und effiziente Möglichkeit, unveränderliche Objekte in Python zu erstellen. Es ist eine praktikable Alternative zu mehr fortgeschrittenen Techniken und bietet zusätzliche Vorteile wie Serialisierungskompatibilität.Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die den Kriterien entsprechen: **Option 1 (Fokus auf das Problem):** * **So erstellen Sie wirklich unveränderliche Objekte in Python: Jenseits der Grundlagen** **Option 2 (Lösung hervorheben). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!