【发布时间】:2012-06-16 08:59:04
【问题描述】:
我想在python中subclassdict这样子类的所有字典都是不可变的。
我不明白__hash__ 是如何影响不变性的,因为在我的理解中它只是表示对象的平等或不平等!
那么,__hash__ 可以用来实现不变性吗?怎么样?
更新:
目标是来自 API 的公共响应可用作 dict,它必须作为全局变量共享。那么,无论如何,它都需要完好无损?
【问题讨论】:
-
这已经被问过很多次了(不幸的是,我现在手头没有链接)。对于大多数问题,尝试制作不可变字典是错误的方法。你到底想达到什么目的?
-
我会覆盖你的dict的
__setitem__()方法。但是请注意,这并不能保证您的 dict 的值是不可变的(例如,您的值是列表)。 -
@JoelCornett:您至少还需要覆盖
__delitem__()、clear()、pop()、popitem()、setdefault()和update()。 -
@SvenMarnach:哈哈哈我忘了那些 XD。是的,你会的。
标签: python class subclass immutability