gpt4 book ai didi

python - 如何使字典只读?

转载 作者:IT老高 更新时间:2023-10-28 20:24:11 26 4
gpt4 key购买 nike

我有这样的课:

class A:
def __init__(self):
self.data = {}

在某些时候我想禁止 self.data 字段修改。

我读过 PEP-416 rejection notice有很多方法可以做到这一点。所以我想知道它们是什么。

我试过了:

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) 是一个选项,但我认为其他选项可以存在。

谢谢

最佳答案

使用 collections.Mapping例如

import collections

class DictWrapper(collections.Mapping):

def __init__(self, data):
self._data = data

def __getitem__(self, key):
return self._data[key]

def __len__(self):
return len(self._data)

def __iter__(self):
return iter(self._data)

关于python - 如何使字典只读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19022868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com