我需要創建一個虛擬對象來標記列表中的一個未初始化的元素(顯然,字典將是一個更好的選擇,但我需要一個列表,因爲內存限制嚴重)。創建一個獨特的虛擬對象
我想用這個目的具有以下屬性的對象:
- 它不評估爲等於任何其他對象,但本身。
- 除了從原始引用(通過賦值或參數傳遞)之外,不能創建對其的引用。
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.)
除了你沒有用身份測試,你正在測試平等。使用'a [0]是UNINITIALIZED_VALUE'。現在,對於實際上沒有任何*差異的簡單對象*。但這是事情的原則。 ;-) –
@LennartRegebro我添加了一個解答您的評論的答案。 – max