0
我想知道是否有乾淨的方法來檢查貨架是否包含對象。正如你將會在例子中看到的那樣,我們不能像字典那樣做(myObj in list(myDictionary.values())
)。如果我搜索一個內置對象(str
,int
...),那麼這個寫法將起作用,但如果我搜索其他東西,它將不起作用。檢查一個對象是否在貨架上
import shelve
class foo():
def __init__(self):
pass
obj = foo()
test = shelve.open('test')
test["elmt1"] = 1
test['elmt2'] = obj
test.update()
print(1 in list(test.values())) # Result is True
print(obj in list(test.values())) # Result is False
如果沒有任何簡單的解決辦法,我可以明顯地與貨架的副本只有工作,並在我的腳本結束我的副本替換貨架。
這是正確的。你可以通過打印'obj'和'list(test.values())[1]''來看到對象是不一樣的 - 它將是同一個類,但是不同的id,因爲它們是兩個不同的副本。 – viraptor
@Tom Dalton謝謝你的回答!我從來沒有使用'__eq__',所以我會立即調查一下它的使用:) – Morgan
不客氣! –