在 Python 中實作不可變物件
在 Python 中,製作不可變物件可能會帶來挑戰。一種常見的解決方案涉及對元組進行子類化,如提供的程式碼片段中所示。然而,這種方法引入了透過索引存取屬性的缺點。
純Python解決方案
答案中提出的一個優雅的解決方案是利用Python的collections.namedtuple類型。這種類型的行為與元組子類方法類似,但提供了額外的優點:
使用namedtuple建立不可變物件:
<code class="python">Immutable = collections.namedtuple("Immutable", ["a", "b"])</code>
解決索引屬性的存取
__setrnamedtuple透過透過__setr__解決了屬性修改的問題,但它仍然允許透過[0]和[1]等索引來存取屬性。透過仔細建立程式碼以避免依賴這些間接方法,可以減輕此限制。
使用C 擴充的替代方法
在需要更複雜的實現的情況下,可以透過以下方式開發C 擴充來提供真正的不變性:
以上是## 如何在 Python 物件中實現真正的不變性:方法比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!