You always need to include parentheses when calling functions, so write:
dict['foo'].getValue()
Also, the getValue method should accept a self parameter and access instance attributes through it:
def getValue(self):
return self.value
Finally, that programming style, where every attribute is accompanied by a "getter", is discouraged in Python. It is easy enough to implement calculated slots, so there is no need for getters.
Names such as dict and object are also highly discouraged because they conflict with built-in types of the same name.
EDIT
The code was edited in the meantime, rendering some of the above remarks obsolete. The latest version of the posted code appears to work just fine when pasted into Python.