Python对象作为字典值

Python对象作为字典值,python,Python,因此,我有以下代码,其中dictionary的值是一个对象,该对象的键是对象中的一个项: class MyObject(): def getName(self): return self.name def getValue(self): return self.value def __init__(self,name, value): self.name = name self.value = value d

因此,我有以下代码,其中dictionary的值是一个对象,该对象的键是对象中的一个项:

class MyObject():
    def getName(self):
       return self.name

    def getValue(self):
       return self.value

    def __init__(self,name, value):
       self.name = name
       self.value = value


dict = {}
object = MyObject('foo', 2) //foo is the name, 2 is the value
dict[object.getName()] = object
但是,我无法像这样访问对象:

>>>print dict['foo'].getValue()
<bound method object.getValue of <__main__.object instance at 0xFOOBAR000 >>
打印dict['foo'].getValue() 有没有办法以这种方式访问对象

编辑:


我不知道为什么,但我的代码最终决定开始工作,所以对于任何有类似问题的人,上面的代码都是有效的,应该可以工作。我当前的Python版本是2.7.3

调用函数时始终需要包含括号,因此请编写:

dict['foo'].getValue()
另外,
getValue
方法应该接受一个
self
参数,并通过它访问实例属性:

def getValue(self):
    return self.value
最后,Python不鼓励这种编程风格,即每个属性都有一个“getter”。它是为了实现计算的插槽,所以不需要getter

诸如
dict
object
之类的名称也非常不推荐,因为它们与相同名称的名称冲突

编辑

同时对代码进行了编辑,使上述一些评论过时。粘贴到Python中时,发布代码的最新版本似乎工作正常。

可以。你的例子对我很有用。你怎么会失败?你有错误吗?没有错误,我得到的是
你粘贴的代码没有方法,所以这没有意义。请发布您正在运行的实际代码。您的新示例使用了您没有显示的方法(如
getName
getValue
),因此很难确定发生了什么。我的猜测是你想做
object.getName()
object.getValue()
(注意括号)。现在它应该完全更新,以反映我正在进行的调用类型的性质。这不是语法问题,我无法复制和粘贴代码,所以我必须对代码进行简化。我的代码中的键工作正常,它返回我试图访问的对象的正确地址,但这就是它返回的全部内容。@Blackninja543:您需要复制并粘贴代码。如果你“速记”它,你的“速记”给出不同的错误,那么没有人能帮助你。要理解您正在使用的代码中的错误,我们必须查看您正在使用的实际代码。粘贴的代码有一个语法错误,因为当我将最新代码粘贴到Python中,键入
dict['foo'].getValue()
,它会打印
2
,所以现在就可以工作了。