frozenlist
https://pypi.org/project/frozenlist/
freezeできるlist
freezeしたらappendなどで変更できない
FrozenList is a list-like structure which implements collections.abc.MutableSequence, and which can be made immutable.
https://github.com/aio-libs/frozenlist
https://frozenlist.readthedocs.io/en/latest/
transformersでは依存するaio系で使っている(?)ので入るみたい
実装を覗く
https://github.com/aio-libs/frozenlist/blob/v1.3.3/frozenlist/__init__.py
functools.total_ordering
__eq__と__le__を定義
class FrozenList(MutableSequence):
collections.abc.MutableSequence
def __init__(self, items=None):
itemsは項目24 動的なデフォルト引数を指定するときにはNoneとdocstringを使うの例
__setitem__, __delitem__, insertは_frozen属性がTrueならraise RuntimeError("Cannot modify frozen list.")
__getitem__、sliceを渡して部分リストが新規に返る。これは変更できる
Pythonはスライスでシーケンスの一部をコピーできる
(IMO:Pythonはリストを変更できなくしても、部分を取得して変更できるのを考慮しないといけなさそう)
Python 3.9以上と未満で分岐したコードif sys.version_info >= (3, 9):がある(sys.version_info)]