[Python-Dev] Add a frozendict builtin type

Victor Stinner victor.stinner at gmail.com
Thu Mar 1 15:54:01 CET 2012


>> > Here are my real-world use cases. Not for security, but for safety and
>> > performance reasons (I've built by own RODict and ROList modeled after
>> > dictproxy):
>> >
>> > - Global, but immutable containers, e.g. as class members
>>
>> I attached type_final.patch to the issue #14162 to demonstrate how
>> frozendict can be used to implement a "read-only" type. Last version:
>> http://bugs.python.org/file24696/type_final.patch
>
> Oh, hmm. I rather meant something like that:
>
> """
> class Foo:
>    some_mapping = frozendict(
>        blah=1, blub=2
>    )
> or as a variant:
>
> def zonk(some_default=frozendict(...)):
>    ...
> or simply a global object:
>
> baz = frozendict(some_immutable_mapping)
> """

Ah yes, frozendict is useful for such cases.

> I'm not sure about your final types. I'm using __slots__ = () for such things

You can still replace an attribute value if a class defines __slots__:

>>> class A:
...   __slots__=('x',)
...   x = 1
...
>>> A.x=2
>>> A.x
2

Victor


More information about the Python-Dev mailing list