Currently the default pickling implementation will not produce a frozen object after unpickling if the pickled object is frozen.
This means it is hard to "guarantee" a particular class instance is frozen (by freezing it in __init__). We could store whether the object is frozen or not in the pickle to be able to freeze it in the default setstate method.