Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Exception exceptions.AttributeError: "ID3 instance has no attribute 'modified'"
in <bound method ID3.__del__ of <ID3.ID3 instance at 0x01854B48>> ignored
Ich benutze ein Modul namens ID3.. Ich möchte allgemein wissen das die Fehlermeldung heißt und wann sowas auftreten kann. Wenn man das verallgemeinern kann. Hab sowas noch nie gehabt..
ich nehme mal an es handelt sich um das ID3-py-Modul von sourceforge: id3-py.sourceforge.net/ ? (Bei einem Post zu obskuren Modulen kann es wirklich helfen mit einem Link auf das Modul zu dienen: Nicht jeder kennt und hat alle Module. )
Aber was die Fehlermeldung heißt ist eigentlich klar: Du greifst auf ein Attribute von ID3 zurück, daß es nicht gibt - aber eigentlich, wenn ich mir den Code so anschaue, sollte es ihn geben. Insofern vermute ich einen Bug des Moduls, habe aber auch nicht die Nerven mich jetzt damit auseinanderzusetzen, zumal die letzten Änderungen 2002 waren und ich noch nicht einmal weiß, ob ich zum richtigen Modul rate. Gibt es nichts Aktuelleres oder besser Gepflegtes, was dieselbe Leistung erbringt?
zum Modul: Das war der erste treffer bei google und was ich mir vorstellte ging damit auch ziemlich schnell deswegen hab ich nicht weiter gesucht. Das problem taucht auf wenn ich einen "try - except" block habe und in dem try block eine exception geworfen wird, diese will ich aber nicht weiter beachten deswegen "except:pass". Ich verstehe bloß nicht warum ich drarauf hingewiesen werde, das eine exeption geworfen wurde obwohl sie im try block steht...
Exception exceptions.AttributeError: "ID3 instance has no attribute 'modified'"
in <bound method ID3.__del__ of <ID3.ID3 instance at 0x01854B48>> ignored
In Deutsch: Die Exception ist in "ID3.__del__()" aufgetreten. Deswegen wurde sie auch ignoriert, weil Exceptions in __del__-Methoden immer ignoriert werden.
Sprich: es handelt sich um einen Bug im ID3-Modul, das in __del__ auf ein Attribut zugreifen will, das nicht/nicht mehr existiert.
Ja, birkenfeld, hast recht. Allerdings - wenn ich mir das richtige Modul anschaue - ruft __del__ nur self.write() auf, was wiederum self.modified abfragt. Dieses aber kann gar nicht gelöscht werden - es sei denn, jemand fummelt hat da am Code rumgefummelt. Oder habe ich da auch was übersehen?
CM hat geschrieben:Allerdings - wenn ich mir das richtige Modul anschaue - ruft __del__ nur self.write() auf, was wiederum self.modified abfragt. Dieses aber kann gar nicht gelöscht werden - es sei denn, jemand fummelt hat da am Code rumgefummelt. Oder habe ich da auch was übersehen?
Ja, das, insbesondere die zweite Warnung zu __del__():
Python 2.5 reference hat geschrieben:Also, when __del__() is invoked in response to a module being deleted (e.g., when execution of the program is done), other globals referenced by the __del__() method may already have been deleted.
... was scheinbar nicht nur bei globals der Fall ist sondern auch bei Instanzvariablen. Wie gesagt, __del__() sollte wirklich nach Möglichkeit nicht verwendet werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Python 2.5 reference hat geschrieben:Also, when __del__() is invoked in response to a module being deleted (e.g., when execution of the program is done), other globals referenced by the __del__() method may already have been deleted.
... was scheinbar nicht nur bei globals der Fall ist sondern auch bei Instanzvariablen.
Um $GOTTES willen nein! Das gilt natürlich *nicht* für Objekte, die an das Objekt gebunden sind auf dem `__del__()` aufgerufen wurde. Genau das soll/muss man ja mit "globalen" Objekten machen, damit man *sicher* sein kann, dass die noch nicht vom GC gefressen wurden.