Hi, kennt einer von euch diesen Fehler in Python? bytes' object has no attribute 'function' Ich versuche hier eine bytes-Variable an eine Funktion zu übergeben, teile zu extrahieren und als integer zurück zu geben. Der oben genannte Fehler tritt dann bei mir auf. Aus dem Hauptprogramm: variable=b'0000' .... if (datei.function(variable)) > 0: GPIO.output (14,GPIO.HIGH) Aus dem Unterprogramm: def function (variable): output=(int(variable[0:1],2)) return Dir Vielen Dank für die Hilfe, Jule
Also, ich mauss da mal den Glaskugel polieren... Ich vermute dass: 1) der Aufruf von function in einer anderen Datei steht als seine Definition (wg. "Hauptprogramm" und "Unterprogramm" 1a) dieses "Unterprogramm" in einer Datei namens "datei.py" untergebracht ist 1b) du vergessen hast im "Hauptprogramm" ein "import datei" einzufügen. 2) function eher "output" zurückliefern soll als "Dir"
Hey, danke erstmal. Hier nochmal die relevanten Auszüge aus dem unveränderten Programm. Hatte versucht zu vereinfachen. Hauptprogramm: import ubit ... data = b'0000000000000000000000000000000' ... if (ubit.dir_1(data)) > 0: GPIO.output (14,GPIO.HIGH) else: GPIO.output (14,GPIO.LOW) das Unterprogramm: def dir_1 (data): Dir=(int(data[0:1],2)) return Dir
main.py
1 | import sub |
2 | |
3 | print (sub.dir_1(b'0101')) |
sub.py
1 | def dir_1 (data): |
2 | Dir=(int(data[0:1],2)) |
3 | return Dir |
Resultat:
1 | ~ >python main.py |
2 | 0 |
3 | |
4 | ~ > _ |
Funktioniert einwandfrei...
Ok. Die Funktion hierß genau wie die Variable, die ich ursprünglich übergeben hatte... Anfängerfehler. Danke :)
Julia schrieb: > bytes' object has no attribute 'function' Wenn man noch dazu schreiben würde, in welcher Zeile der Fehler auftritt würde sich die Arbeit deutlich vereinfachen.
Julia schrieb: > data = b'0000000000000000000000000000000' > > ... > if (ubit.dir_1(data)) > 0: > GPIO.output (14,GPIO.HIGH) > else: > GPIO.output (14,GPIO.LOW) > > das Unterprogramm: > > def dir_1 (data): > Dir=(int(data[0:1],2)) > return Dir Man sollte auch überlegen, ob es sinnvoll ist in Python auf "Bit-Ebene" zu arbeiten. Die OO-Programierung bietet da besser lesbare Möglichkeiten und die Performance wird sicher auch nicht besser. Ich weiß auch nicht was dass sein soll: data = b'0000000000000000000000000000000' In Python wird eine binäre Zahl als 0b.... geschrieben.
Karl schrieb: > data = b'0000000000000000000000000000000' > > In Python wird eine binäre Zahl als 0b.... geschrieben. Warum denkt immer alle Welt das ein b'' in Python was mit binaer zu tun haette? b'' bedeutet (in Python 3!) Byte-String, wohingegen das normale '' ein Unicode-String ist. Viele Funktionen, z.B. socket.send oder serial.write wollen einen Byte-String, keinen Unicode-String. Erstmal schlau machen, dann schreiben... Karl schrieb: > Man sollte auch überlegen, ob es sinnvoll ist in Python auf "Bit-Ebene" > zu arbeiten. Sieht mir nach nem RPi aus. Ja, macht also Sinn.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.