Я хотел бы знать, есть ли чистый способ проверить, содержит ли полка предмет. Как вы увидите в примере, мы не можем делать это со словарем (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] '- это будет тот же класс, но другой идентификатор, потому что это две разные копии. – viraptor
@Tom Dalton Спасибо за ваш ответ! Я никогда не использовал '__eq__', поэтому я сразу же немного расследую его использование :) – Morgan
Добро пожаловать! –