12

所以我有以下代码,其中字典的值是一个对象,而该对象的键是对象中的一个项目,如下所示:

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 >>

有没有办法以这种方式访问​​对象?

编辑:

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

4

1 回答 1

15

调用函数时总是需要包含括号,所以写:

dict['foo'].getValue()

此外,该getValue方法应该接受一个self参数并通过它访问实例属性:

def getValue(self):
    return self.value

最后,在 Python 中不鼓励使用每个属性都带有一个“getter”的编程风格。实现计算槽很容易,因此不需要 getter。

诸如dict和之类的名称object也非常不鼓励使用,因为它们与同名的内置类型冲突。

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

于 2012-11-13T20:58:24.140 回答