python - 创建一个独特的虚拟对象

标签 python python-3.x constants identity initialization

我需要创建一个虚拟对象来标记列表中未初始化的元素(显然,字典是更好的选择,但由于内存限制很大,我需要一个列表)。

我正在考虑为此目的使用具有以下属性的对象:

  1. 它的计算结果不等于除其自身之外的任何其他对象。
  2. 除了原始引用(通过赋值或参数传递)之外,无法创建对其的引用。

None 满足第一个要求,但不满足第二个要求(因为它可以使用文字 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。)

最佳答案

不,每个人都是这样做的。请注意,您不能在此类对象上设置任意属性。

关于python - 创建一个独特的虚拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12312245/

相关文章:

c++ - 使用 const 数组的元素在类中定义数组大小时,“数组边界不是整数常量”

python - 二进制搜索算法不起作用

python - OpenCV Python VideoWriter 保存损坏的视频

c++ - Boost.Python - 参数化构造函数错误

assembly - 将符号的 64 位地址加载到 AArch64 上的寄存器

android - 在哪里可以找到 Android : constant value in source code?

python - 使用 SciPy 规则网格在 Python 中进行快速二维插值以进行分散/不规则评估

python - 进行 Pandas DataFrame 计算时,顶行返回全零,所有其他行均正确

python - 如何扩展 Python 枚举?

python - 使用 float ('nan' ) 来表示缺失值 - 安全吗?