我需要创建一个虚拟对象来标记列表中的未初始化元素(显然,字典会是更好的选择,但由于内存限制很大,我需要一个列表)。
我正在考虑为此目的使用具有以下属性的对象:
- 它不等于除自身之外的任何其他对象。
- 除了从原始引用(通过赋值或参数传递)之外,无法创建对它的引用。
None
满足第一个但不满足第二个要求(因为它可以通过使用 literal 在程序中的任何位置创建None
)。
我认为应该有效的一种方法是:
UNINITIALIZED_VALUE = object() # will be compared for == through identity
a = [1, UNINITIALIZED_VALUE, 2, UNINITIALIZED_VALUE]
a[1] == a[3] # True
a[0] == UNINITIALIZED_VALUE # False
我想仔细检查一下我没有遗漏这种方法的任何潜在问题。(我正在使用 Python 3。)