TypeError:' dict'对象不能从main调用

时间:2015-02-13 17:52:25

标签: python dictionary

我编写了一个代码,用于存储文本文件中出现的单词并将其存储到字典中:

class callDict(object):
    def __init__(self):
        self.invertedIndex = {}

然后我写了一个方法

def invertedIndex(self):
        print self.invertedIndex.items()

以下是我打电话的方式:

if __name__ == "__main__":
    c = callDict()
    c.invertedIndex()

但它给了我错误:

Traceback (most recent call last):
  File "E\Project\xyz.py", line 56, in <module>
    c.invertedIndex()
TypeError: 'dict' object is not callable

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

您正在代码中定义一个方法和一个实例变量,两者都具有相同的名称。这将导致名称冲突,从而导致错误。

更改其中一个名称以解决此问题。

因此,例如,此代码应该适合您:

class CallDict(object):
    def __init__(self):
        self.inverted_index = {}
    def get_inverted_index_items(self):
        print self.inverted_index.items()

使用以下方法检查:

>>> c = CallDict()
>>> c.get_inverted_index_items()
[]

还可以使用ozgur's answer装饰器检查@property

答案 1 :(得分:2)

除了mu's回答,

@property
def invertedIndexItems(self):
    print self.invertedIndex.items()

然后就是你如何调用它:

if __name__ == "__main__":
    c = callDict()
    print c.invertedIndexItems

答案 2 :(得分:1)

方法是Python中的属性,因此您无法在它们之间共享相同的名称。重命名其中一个。