我似乎无法弄清楚这一点,而且,这让我疯狂。我们假设我有以下课程:
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'对象不支持项目分配
有什么想法吗?
答案 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()