Python访问字典和更改值 - 错误

时间:2013-10-18 09:20:23

标签: python dictionary

我似乎无法弄清楚这一点,而且,这让我疯狂。我们假设我有以下课程:

class Test:

 connect = {'Message': None}

 def connect(self):
  if not self.connect['Message']:
     print "Message is not set"
  else:
     print "Message is active and set!"

 def connectMSG(self, theMessage):
     self.connect['Message'] = theMessage

以下看起来不错。我似乎无法在视觉上看到错误,但我得到以下内容:

  

self.connect ['Message'] = theMessage   TypeError:'instancemethod'对象不支持项目分配

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您通过具有相同名称的方法覆盖了属性connect。重命名您的属性。

如果您真的想拥有类属性或实例属性,那么下一个问题就是。如果您想要实例属性,请在__init__方法中定义它。

答案 1 :(得分:2)

您已定义了一个名为connect的方法和变量。因此,您已使用方法覆盖了字典,请更改其中一个字典的名称。

所以讨厌的是首先创建名为connect的字典,然后用方法覆盖它。当您尝试访问字典时,您会得到一个错误,告诉您connect方法不支持该操作(它不是字典)

答案 2 :(得分:0)

更正为:

class Connection:
   def __init__(self):
       self.connect = {'Message': None}              #moved here

   def Check(self):                                  #renamed
       if not self.connect['Message']:
           print "Message is not set."
       else:
           print "Message is active and set!"

   def Connect(self, theMessage):                    #renamed
       self.connect['Message'] = theMessage

cnt = Connection()