AttributeError: 'set' - Objekt hat kein Attribut 'items'

Ich bin sehr neu in python und habe versucht, mir beibringen, wie ich gehen (nicht die beste Methode diese tief in python, aber für time ' s sake Brauch ich auch). Die Module, die ich importiert haben, sind Tkinter und csv. Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben,

Um der Kürze Willen werde ich nicht zu post meinen gesamten code hier, aber ich werde auch die ganzen Fehler und geben Sie die Zeile, die den Fehler der Anwendung auf. Alles, was unten ist, ist in einer Klasse mit dem Namen 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)

Schrieb ich diesen code heraus getrennt, um sicherzustellen, dass er funktioniert, bevor Sie es in das Programm, und es funktionierte perfekt, aber wenn ich es in der Klasse und die änderungen vorgenommen (dachte ich) musste ich machen, um den code-Zeilen /Variablen hat es nicht funktioniert. So, der führt mich zu glauben, dass ich bin nur der Korrektur etwas falsch.

Hier ist der Fehler:

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'

Dort ist die Zeile 328 bezieht sich auf die Zeile:
"oder (selbst.Schlüssel selbst.val) in sich selbst.änderungen.items():"

Habe ich geändert, um (wie ich fühle), die Anwesenheit oder Abwesenheit von "selbst". für alle Variablen, aber ich kann einfach nicht damit es funktioniert.

BEARBEITEN:
Ich veränderte den code so Aussehen:

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)

als pro die Kommentare, aber bekomme immer noch die genau gleichen Fehler.

Auch der Fehler selbst ist zu sagen es ist kein Attribut mit dem Namen items(). So versuchen Sie, und entfernen Sie .items() aus self.changes.items() docs.python.org/3/library/stdtypes.html#dictionary-view-objects Also, warum tun Sie self.changes = {self.key:self.val}? Wenn Sie nur versuchen, auf ein Wörterbuch, hinzufügen self.key:self.val ist nicht notwendig, da self.changes = {} ist genug.
Wenn ich entfernt die .items() gibt einen ValueError, der sagt "müssen mehr als 0-Werte zu packen". Ich werde versuchen, verlassen Sie das Wörterbuch leer.
Ja, denn Sie haben nichts in Ihrem Schlüssel und Wert. Sie initiiert diese Variablen mit nichts.
Sie können angeben, was Sie übergeben in der Funktion als self?
Ich bin mir nicht ganz sicher, was du damit meinst. (Wie oben erklärt, bin ich ziemlich Anfänger), aber wenn ich nicht über den "self." es wird mir ein weiterer Fehler.

InformationsquelleAutor MTMA | 2015-08-20

Schreibe einen Kommentar