AttributeError的:“设置”对象有没有属性“项目”
我很新的蟒蛇,并一直在努力,因为我去(不是最好的方法,这种深入到蟒蛇,但时间的缘故,我需要太)自学。我输入的模块是Tkinter和csv。让我知道你是否有任何问题,AttributeError的:“设置”对象有没有属性“项目”
为了简洁起见,我不打算在这里发布我的整个代码,但我会包括整个错误并指出错误适用的行。下面的所有内容都在名为MainApp的类中。
def SubmitEdit(self):
self.key=""
self.val=""
new_rows = []
self.changes = {self.key:self.val}
with open("info.csv",'rb') as f:
reader = csv.reader(f):
for row in reader:
new_row = row
for field in row:
if field == "NAME":
print "groovy"
for (self.key,self.val) in self.changes.items():
new_row = [ x.replace(self.key,self.val) for x in new_row]
new_rows.append(new_row)
with open("info.csv","wb") as f:
writer = csv.writer(f):
writer.writerows(new_rows)
我写了这个代码进行分开,以确保它把它在计划工作过它完美地工作,但是当我把它放在类和所做的更改(我认为)我需要作出代码/变量行不起作用。所以这让我相信我只是错误地纠正了一些事情。
以下是错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py",line 1536, in__call__
return self.func(*args)
File "C:\Python27\draft.py", line 328, in SubmitEdit
for (self.key,self,val) in self.changes:
AttributeError: 'set' object has no attribute 'items'
当线328指的是行: “在self.changes.items或(self.key,self.val)():”
我改变了(我感觉)存在或不存在“自我”。对于所有的变量,但我不能让它工作。
编辑: 我改变了代码如下所示:
def SubmitEdit(self):
new_rows = []
self.changes = {"MTMA",123}
with open("info.csv",'rb') as f:
reader = csv.reader(f):
for row in reader:
new_row = row
for field in row:
if field == "NAME":
print "groovy"
for (key,val) in self.changes.items():
new_row = [ x.replace(key,val) for x in new_row]
new_rows.append(new_row)
with open("info.csv","wb") as f:
writer = csv.writer(f):
writer.writerows(new_rows)
按照该意见,但仍然得到确切同样的错误。
你可以从最新的更新的代码中看到 -
self.changes = {"MTMA",123}
当你定义如上self.changes,你实际上是定义了一组,而不是一本字典,因为你用“”(逗号)而不是冒号,我很确定你的实际代码中你使用的是逗号本身,而不是冒号。
要定义字典,“MTMA”作为关键和123值,它们之间用冒号,示例 -
self.changes = {"MTMA":123}
在实际代码同样做的一样好。
如果你想要的是一个空的字典,把它定义为 -
self.changes = {}
Ahhhhh。现在很明显。多么尴尬...... 谢谢你的帮助! – MTMA
井本身是说有()称为'项目没有属性'的错误。因此,尝试从'self.changes.items删除'.items()'()'http://docs.python.org/3/library/stdtypes.html#dictionary-view-objects 此外,你为什么要做'self.changes = {self.key:self.val}'?如果你只是想引用一个字典,添加'self.key:self.val'就没有必要,因为'self.changes = {}'就足够了。 – awbemauler
当我拿走.items()时,它返回一个ValueError,它表示“需要多个值来解包”。我会尝试将字典留空。 – MTMA
是的,因为你的钥匙和价值没有任何东西。你什么也没有发起这些变量。 – awbemauler