Vâng, câu hỏi nằm trong tiêu đề: làm cách nào để xác định từ điển python với khóa không thay đổi nhưng giá trị có thể thay đổi? Tôi đã đưa ra điều này (trong python 2.x):Xác định từ điển python với các khóa không thay đổi nhưng giá trị có thể thay đổi
class FixedDict(dict):
"""
A dictionary with a fixed set of keys
"""
def __init__(self, dictionary):
dict.__init__(self)
for key in dictionary.keys():
dict.__setitem__(self, key, dictionary[key])
def __setitem__(self, key, item):
if key not in self:
raise KeyError("The key '" +key+"' is not defined")
dict.__setitem__(self, key, item)
nhưng có vẻ với tôi (không ngạc nhiên) thay vì cẩu thả. Đặc biệt, điều này là an toàn hay có nguy cơ thực sự thay đổi/thêm một số khóa, vì tôi đang kế thừa từ dict? Cảm ơn.
Vâng, có thể ai đó có thể gọi 'dict .__ setitem __() 'trên một thể hiện của' FixedDict', không? – cdhowie
Bạn nên kiểm tra để chắc chắn rằng 'dict.update' gọi' __setitem__' - Mặc dù, ngay cả khi có, tôi không chắc liệu có phụ thuộc vào việc thực thi hay không ... – mgilson
('update' bỏ qua' __setitem__') – katrielalex