Am 27.01.19 um 18:57 schrieb Michael S.:
Heute wieder einmal einen Fehler entdeckt, wo ich von "self.State" gelesen habe, statt von "State". "self.State" gab es gar nicht, wird nirgends angelegt und nie verwendet. Das war einfach falsch runtergeschrieben.
Diesen Fehler hätte z.B. "pylint" gefunden: https://github.com/PyCQA/pylint
Offenbar analysiert Python den Code vor Ausführung nicht tief genug, um sowas zu entdecken.
Die dynamische Natur von Python macht so etwas schwierig. Z.B. lassen sich Attribute zu Klassen und Instanzen problemlos während der Laufzeit hinzufügen und nicht nur von Code, der in der Klasse "lebt". Dabei muss nicht mal der Name des Attributs als Identifier im Code auftauchen: class Foo: pass f = Foo() setattr(Foo, '\x73\x70\x61\x6d\x6d', 'ham') print(f.spamm) Da ist es für eine Code-Analyzer schwer nachzuvollziehen, dass 'spamm' in der letzten Zeile ein valider Attributwert ist. Chris