我有一个类:
class A:
def __init__(self):
self.data = {}
在某些时候我想禁止 self.data
字段修改。
我在 PEP-416 拒绝通知 中读到有很多方法可以做到这一点。所以我想找到它们是什么。
我试过这个:
a = A()
a.data = types.MappingProxyType(a.data)
这应该有效,但首先,它是 python3.3+,其次,当我多次执行此“禁止”时,我得到了这个:
>>> a.data = types.MappingProxyType(a.data)
>>> a.data = types.MappingProxyType(a.data)
>>> a.data
mappingproxy(mappingproxy({}))
尽管只获得 mappingproxy({})
会好得多,因为我要“禁止”很多次。检查 isinstance(MappingProxyType)
是一个选项,但我认为可以存在其他选项。
谢谢
原文由 sshilovsky 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
collections.Mapping
例如