Fehlermeldung: object is not iterable

  • Hallo,


    ich dachte "object is not iterable" hätte ich verstanden aber bei
    [PHP]
    Traceback (most recent call last):
    File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
    self.run()
    File "/usr/lib/python3.2/threading.py", line 693, in run
    self._target(*self._args, **self._kwargs)
    File "../module/mod_TasterEventQue.py", line 288, in serviceTasterEventQue
    sl[SLidx.Norm],sl[SLidx.wOK],oldval)
    TypeError: 'NoneType' object is not iterable
    [/PHP]


    steige ich aus. Die Line ist:
    [PHP]
    (val,dt,SwitchListTime[SLline])=ServiceSwitchListTime(newval,SwitchListTime[SLline],
    sl[SLidx.Norm],sl[SLidx.wOK],oldval)
    [/PHP]


    Alle Parameter auf der rechten Seite sind Skalare...


    Bitte um eine Idee... oder Erklärung.


    Der Fehler tritt nur manchmal auf....


    Danke


    Gottfried

  • Hallo,


    du musst schon ein bisschen mehr Code posten - in deiner einen Zeile wird nämlich nicht iteriert.
    Irgendwo will irgendwer halt über etwas iterieren - das etwas ist aber `None` und über None kann man halt nicht iterieren.


    Wie sieht denn die Funktion `ServiceSwitchListTime`aus?


    pep8 ist eine gut Idee, weil auch die Schreibweise `ServiceSwitchListTime` per Konvention eine Klasse wäre, du aber (hoffentlich) mit der Instanz einer Klasse arbeitest.
    Und _aussagekräftige_ Variablenanamen sind auch immer eine gute Idee - unter `SLidx.wOK` kann sich z.B. niemand was vorstellen.


    Gruß, noisefloor

  • Gratuliere: das ist das blödeste und eingebildetste Posting das ich je gesehen habe.


    Kann jemand bitte so nett sein und mich aus diesem Forum löschen - DANKE



    Ich bezweifle, dass du überhaupt etwas verstanden hat...
    Offensichtlich ist ``sl`` None.
    Allein die Schreibweise à la ``val,dt,SwitchListTime`` ist schon himmeltraurig.


    Lies http://pep8.org/ durch und halte dich daran ;)

  • Hallo,


    @gottfired50: das die "Qualität" deines Codes (stark) suboptimal ist, war ja schon öfters Thema. Was du aus der Kritik machst, ist grundsätzlich deine Sache. Nur wenn du nix dran machst und weiterhin Codeschnipsel hier postest, dann brauchst du dich bitte auch nicht über anhaltende Kritik zu wundern.


    Und aus Supportsicht ist es auch wenig hilfreich, wenn du nur Mini-Codeschnipsel hier postest, in denen du den Fehler glaubst zu vermuten. Poste einfach allen relevanten Code, dann kann man auch supporten und muss nicht raten.


    Ansonsten gibt's für Python-Frage ja auch noch: http://www.python-forum.de :)


    Gruß, noisefloor


  • du musst schon ein bisschen mehr Code posten - in deiner einen Zeile wird nämlich nicht iteriert.


    Natuerlich wird es das.


    Code
    a, b, c = xrange(3)


    Und dadurch ist der Fehler ja auch erklaert - er gibt None zurueck, statt ein Iterable mit entsprechend vielen aufgezaehlten Eintraegen.


    Wenn sl None waere, wuerde es zu einem TypeError kommen.


    Ueber die kritikfaehigkeit von gottfried50 - gut, da kann man auch nen Buch drueber schreiben.

  • Da haette ich ausfuehrlicher sein muessen:


    Code
    >>> None[10]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'NoneType' object has no attribute '__getitem__'
    >>> iter(None)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'NoneType' object is not iterable


    sl kann also nicht Ursache des Problems sein - denn dort wuerde ein __getitem__ angemaekelt. Es wird aber die mangelnde Iterierbarkeit bemeckert - das ist also der Rueckgabewert, der nicht entpackbar ist.