Если вы надеетесь создать «безопасную» структуру данных только за python , то вы в конечном итоге будете разочарованы. Предполагая, что вы находитесь в python 2.7 (по тому, как вы назвали super
), вот несколько очень простых способов взломать ваш текущий тип.
>>> dict(box)
{'some_secret_key': 'I am secure content'}
>>> box.copy()
{'some_secret_key': 'I am secure content'}
>>> super(type(box), box).items()
[('some_secret_key', 'I am secure content')]
>>> def safe_cracker(**kw): return kw
>>> safe_cracker(**box)
{'some_secret_key': 'I am secure content'}
В python 3 есть меньше способов , но вот несколько способов утечки
>>> box.get("some_secret_key")
'I am secure content'
>>> super(type(box), box).items()
dict_items([('some_secret_key', 'I am secure content')])
>>> box.setdefault("some_secret_key")
'I am secure content'
>>> "some_secret_key" in box
True
(Пока вы наследуете от dict
, любой может использовать методы на основе dict
для непосредственного опроса структуры, такие как dict.items(box)
или super(type(box), box).items()
)